home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
utils
/
inter37b.arj
/
INTERRUP.H
< prev
next >
Wrap
Text File
|
1993-10-03
|
182KB
|
4,805 lines
Interrupt List, part 8 of 10
This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
--------D-30---------------------------------
INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
the CALL 5 entry point does a FAR jump to here
Note: under DOS 2+, the instruction at PSP:0005 points two bytes too low in
memory
SeeAlso: INT 21/AH=26h
--------D-31---------------------------------
INT 31 - overwritten by CP/M jump instruction in INT 30
--------v-31---------------------------------
INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
Note: if one of the Vacsina viruses is resident, the low byte of this
interrupt still contains the last byte of the INT 30 CP/M JMP
instruction, but the remaining three bytes are 7Fh 39h followed
by the Vacsina version number
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
--------E-310000-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
AX = 0000h
CX = number of descriptors to allocate
Return: CF clear if successful
AX = base selector
CF set on error
AX = error code (DPMI 1.0+) (see below)
Notes: DPMI is the DOS Protected-Mode Interface
the base and limit of the returned descriptors will be 0, and the type
will be "data"
add the value returned by INT 31/AX=0003h to move to subsequent
descriptors if multiple descriptors were allocated
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
Values for error code:
0000h-7FFFh DOS error passed through by DPMI
8001h unsupported function
8002h object in wrong state for function
8003h system integrity would be endangered
8004h deadlock detected
8005h pending serialization request cancelled
8010h out of DPMI internal resources
8011h descriptor unavailable
8012h linear memory unavailable
8013h physical memory unavailable
8014h backing store unavailable
8015h callback unavailable
8016h handle unavailable
8017h maximum lock count exceeded
8018h shared memory already serialized exclusively by another
8019h shared memory already serialized shared by another client
8021h invalid value for numeric or flag parameter
8022h invalid segment selector
8023h invalid handle
8024h invalid callback
8025h invalid linear address
8026h request not supported by hardware
--------E-310001-----------------------------
INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
AX = 0001h
BX = selector to free
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Notes: only one descriptor is freed per call
the program's initial CS, DS, and SS descriptors may be freed
(DPMI 1.0+) any segment registers containing the freed selector are
set to 0000h
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
--------E-310002-----------------------------
INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
AX = 0002h
BX = real mode segment
Return: CF clear if successful
AX = selector corresponding to real mode segment (64K limit)
CF set on error
AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
Notes: multiple calls for the same real mode segment return the same selector
the returned descriptor can never be modified or freed
not supported by MS Windows 3.0 in Standard mode
--------E-310003-----------------------------
INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
AX = 0003h
Return: CF clear
AX = value to add to get next sequential selector
Notes: the increment will be a power of two
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h
--------E-310004-----------------------------
INT 31 P - DPMI 0.9+ - LOCK SELECTOR
AX = 0004h
BX = selector to lock (prevent paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0005h,AX=0600h
--------E-310005-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
AX = 0005h
BX = selector to unlock (permit paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0004h,AX=0601h
--------E-310006-----------------------------
INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
AX = 0006h
BX = selector
Return: CF clear if successful
CX:DX = linear base address of segment
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Note: not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,INT 21/AX=3504h
--------E-310007-----------------------------
INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
AX = 0007h
BX = selector
CX:DX = linear base address
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
Notes: only modify descriptors allocated with INT 31/AX=0000h
only the low 24 bits of the address will be used by 16-bit DPMI
implementations even on a 386 or higher
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
--------E-310008-----------------------------
INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
AX = 0008h
BX = selector
CX:DX = segment limit
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
Notes: CX must be zero for 16-bit DPMI implementations
limits greater than 1MB must be page aligned (low 12 bits set)
only modify descriptors allocated with INT 31/AX=0000h
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
SeeAlso: INT 2C/AX=0003h
--------E-310009-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
AX = 0009h
BX = selector
CL = access rights/type byte
CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
Notes: if the Present bit is clear, CL bits 0-3 may have any value
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
SeeAlso: INT 2C/AX=0005h
--------E-31000A-----------------------------
INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
AX = 000Ah
BX = selector
Return: CF clear if successful
AX = new data selector
CF set on error
AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
Notes: fails if selector in BX is not a code segment or is invalid
use INT 31/AX=0001h to free new selector
future changes to the original selector will not be reflected in the
returned alias selector
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0001h
--------E-31000B-----------------------------
INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
AX = 000Bh
BX = LDT selector
ES:(E)DI -> 8-byte buffer for copy of descriptor
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Ch
--------E-31000C-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
AX = 000Ch
BX = LDT selector
ES:(E)DI -> 8-byte buffer containing descriptor
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
only modify descriptors allocated with INT 31/AX=0000h
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Bh
--------E-31000D-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
AX = 000Dh
BX = LDT selector
Return: CF clear if successful
descriptor allocated
CF set on error
AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
Notes: free descriptor with INT 31/AX=0001h
the first 16 descriptors (04h-7Ch) are reserved for this function, but
some may already be in use by other applications under DPMI 0.9;
DPMI 1.0 guarantees 16 descriptors per client
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h,AX=0001h
--------E-31000E-----------------------------
INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
AX = 000Eh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see below)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8022h) (see AX=0000h)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
SeeAlso: AX=000Bh,AX=000Fh
Format of descriptor buffer entry (one per descriptor to get):
Offset Size Description
00h WORD selector (set by client)
02h QWORD descriptor (set by host)
--------E-31000F-----------------------------
INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
AX = 000Fh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see below)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8021h,8022h,8025h) (see AX=0000h)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
DPMI 1.0+ automatically reloads any segment registers containing a
selector being modified
SeeAlso: AX=000Ch,AX=000Eh
Format of descriptor buffer entry (one per descriptor to set):
Offset Size Description
00h WORD selector
02h QWORD descriptor
--------E-310100-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
AX = 0100h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = real mode segment of allocated block
DX = first selector for allocated block
CF set on error
AX = DOS error code (07h,08h) (see INT 21/AH=59h)
(DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
BX = size (in paragraphs) of largest available block
Notes: multiple contiguous selectors are allocated for blocks of more than 64K
if the caller is a 16-bit program
never modify or deallocate returned descriptors
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0101h,AX=0501h
--------E-310101-----------------------------
INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
AX = 0101h
DX = selector of block
Return: CF set if successful
CF set on error
AX = DOS error code (07h,09h) (see INT 21/AH=59h)
Notes: all descriptors allocated for the block are automatically freed
DPMI 1.0+ automatically zeros any segment registers containing a
selector freed by this function
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0100h,AX=0102h,AX=0502h
--------E-310102-----------------------------
INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
AX = 0102h
BX = new block size in paragraphs
DX = selector of block
Return: CF clear if successful
CF set on error
AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
(DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
BX = maximum block size (in paragraphs) possible
Notes: increasing the size of a block past a 64K boundary will fail if the
next descriptor in the LDT is already in use
shrinking a block past a 64K boundary will cause some selectors to be
freed; DPMI 1.0+ automatically zeros any segment registers containing
a selector freed by this function
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0100h
--------E-310200-----------------------------
INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
AX = 0200h
BL = interrupt number
Return: CF clear
CX:DX = segment:offset of real mode interrupt handler
Note: the DPMI implementation is required to support all 256 vectors
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
--------E-310201-----------------------------
INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
AX = 0201h
BL = interrupt number
CX:DX = segment:offset of real mode handler
Return: CF clear
Note: all memory that may be touched by a hardware interrupt handler must be
locked down with INT 31/AX=0600h
SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
--------E-310202-----------------------------
INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0202h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of handler
CF set on error
AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
Notes: 16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
DPMI 1.0+ supports this function only for backward compatibility; use
AX=0210h or AX=0211h instead
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
--------E-310203-----------------------------
INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0203h
BL = exception number (00h-1Fh)
CX:(E)DX = selector:offset of handler
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
Notes: 32-bit programs must supply an offset in EDX and use a 32-bit interrupt
stack frame on chaining to the next exception handler
the handler should return using a FAR return
all fault stack frames contain an error code, but it is only valid for
exceptions 08h and 0Ah-0Eh
handlers will only be called if the exception occurs in protected mode,
and the DPMI host does not transparently handle the exception
the handler may change certain values on the stack frame (see below)
DPMI 1.0+ supports this function only for backward compatibility; use
AX=0212h or AX=0213h instead
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
Format of stack frame for 16-bit programs: (offset from SS:SP)
Offset Size Description
00h DWORD return CS:IP (do not change)
04h WORD error code
06h DWORD CS:IP of exception
0Ah WORD flags
0Ch DWORD SS:SP
Format of stack frame for 32-bit programs: (offset from SS:ESP)
Offset Size Description
00h DWORD return EIP (do not change)
04h WORD return CS selector (do not change)
06h WORD reserved (do not change)
08h DWORD error code
0Ch DWORD EIP of exception
10h WORD CS selector of exception
12h WORD reserved (do not change)
14h DWORD EFLAGS
18h DWORD ESP
1Ch WORD SS
1Eh WORD reserved (do not change)
--------E-310204-----------------------------
INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
AX = 0204h
BL = interrupt number
Return: CF clear
CX:(E)DX = selector:offset of handler
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
DPMI implementations are required to support all 256 vectors
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
SeeAlso: INT 2F/AX=FB42h/BX=0024h
--------E-310205-----------------------------
INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
AX = 0205h
BL = interrupt number
CX:(E)DX = selector:offset of handler
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
32-bit programs must use a 32-bit interrupt stack frame when chaining
to the next handler
DPMI implementations are required to support all 256 vectors
hardware interrupts are reflected to the virtual machine's primary
client, software interrupts to the current client
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
SeeAlso: INT 2F/AX=FB42h/BX=0025h
--------E-310210-----------------------------
INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0210h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of exception handler
CF set on error
AX = error code (8021h) (see AX=0000h)
Note: DPMI host reflects exception to current client's handler
SeeAlso: AX=0202h,AX=0211h,AX=0212h
--------E-310211-----------------------------
INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0211h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of exception handler
CF set on error
AX = error code (8021h) (see AX=0000h)
Notes: returns address of protected-mode handler for real-mode exception
DPMI host performs a switch to protected mode, reflects the exception
to the virtual machine's primary client, and returns to real mode
on the handler's completion
SeeAlso: AX=0202h,AX=0210h,AX=0213h
--------E-310212-----------------------------
INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0212h
BL = exception or fault number (00h-1Fh)
CX:(E)DX = exception handler selector:offset
Return: CF clear if successful
CF set on error
AX = error code (8021h,8022h) (see AX=0000h)
Note: DPMI host sends exception to current client's handler
SeeAlso: AX=0203h,AX=0210h,AX=0213h
--------E-310213-----------------------------
INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0213h
BL = exception or fault number (00h-1Fh)
CX:(E)DX = exception handler selector:offset
Return: CF clear if successful
CF set on error
AX = error code (8021h,8022h) (see AX=0000h)
Notes: specifies address of protected-mode handler for real-mode exception
DPMI host performs a switch to protected mode, reflects the exception
to the virtual machine's primary client, and returns to real mode
on the handler's completion
SeeAlso: AX=0203h,AX=0211h,AX=0212h
--------E-310300-----------------------------
INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
AX = 0300h
BL = interrupt number
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others must be 0
CX = number of words to copy from protected mode to real mode stack
ES:(E)DI = selector:offset of real mode call structure (see below)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
CS:IP in the real mode call structure is ignored for this call,
instead, the indicated interrupt vector is used for the address
the flags in the call structure are pushed on the real mode stack to
form an interrupt stack frame, and the trace and interrupt flags are
clear on entry to the handler
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286",INT 2C/AX=0026h
SeeAlso: INT 2F/AX=FB42h/BX=000Dh
Format of real mode call structure:
Offset Size Description
00h DWORD EDI
04h DWORD ESI
08h DWORD EBP
0Ch DWORD reserved (00h)
10h DWORD EBX
14h DWORD EDX
18h DWORD ECX
1Ch DWORD EAX
20h WORD flags
22h WORD ES
24h WORD DS
26h WORD FS
28h WORD GS
2Ah WORD IP
2Ch WORD CS
2Eh WORD SP
30h WORD SS
--------E-310301-----------------------------
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
AX = 0301h
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others must be 0
CX = number of words to copy from protected mode to real mode stack
ES:DI / ES:EDI = selector:offset of real mode call structure
(see INT 31/AX=0300h)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
the real mode procedure must exit with a FAR return
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
SeeAlso: INT 2C/AX=0025h
--------E-310302-----------------------------
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
AX = 0302h
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others must be 0
CX = number of words to copy from protected mode to real mode stack
ES:DI / ES:EDI = selector:offset of real mode call structure
(see INT 31/AX=0300h)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
the flags in the call structure are pushed on the real mode stack to
form an interrupt stack frame, and the trace and interrupt flags are
clear on entry to the handler
the real mode procedure must exit with an IRET
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0300h
--------E-310303-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
AX = 0303h
DS:SI / DS:ESI = selector:offset of procedure to call
ES:DI / ES:EDI = selector:offset of real mode call structure
(see AX=0300h)
Return: CF clear if successful
CX:DX = segment:offset of real mode call address
CF set on error
AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
Notes: the real mode call structure is static, causing reentrancy problems;
its contents are only valid at the time of a callback
the called procedure must modify the real mode CS:IP before returning
values are returned to real mode by modifying the real mode call struc
DPMI hosts must provide at least 16 callbacks per client
SeeAlso: AX=0304h,AX=0C00h
Values callback procedure is called with:
DS:SI / DS:ESI = selector:offset of real mode SS:SP
ES:DI / ES:EDI = selector:offset of real mode call structure
SS:SP / SS:ESP = locked protected mode API stack
interrupts disabled
Return: (with IRET)
ES:DI / ES:EDI = selector:offset of real mode call structure to restore
--------E-310304-----------------------------
INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
AX = 0304h
CX:DX = real mode callback address
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
SeeAlso: AX=0303h
--------E-310305-----------------------------
INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
AX = 0305h
Return: CF clear
AX = size in bytes of state buffer
BX:CX = real mode address of procedure to save/restore state
SI:DI / SI:EDI = protected mode procedure to save/restore state
Notes: the buffer size will be zero if it is not necessary to preserve state
16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
this function is only needed if using the raw mode switch service
SeeAlso: AX=0306h
Values to call state-save procedures with:
AL = direction
00h save state
01h restore state
ES:DI / ES:EDI -> state buffer
Return: all registers preserved
--------E-310306-----------------------------
INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
AX = 0306h
Return: CF clear
BX:CX -> procedure to switch from real to protected mode
SI:DI / SI:EDI -> procedure to switch from protected to real mode
Notes: 16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
the caller must save and restore the state of the task with AX=0305h
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0305h
Values to JUMP at mode-switch procedures with:
AX = new DS
CX = new ES
DX = new SS
BX / EBX = new SP / ESP
SI = new CS
DI / EDI = new IP / EIP
Notes: BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
interrupts will stay disabled during the entire mode switch if they
are disabled on entry to the mode-switch procedure
--------E-310400-----------------------------
INT 31 P - DPMI 0.9+ - GET DPMI VERSION
AX = 0400h
Return: CF clear
AH = major version of DPMI spec supported
AL = two-digit minor version of DPMI spec supported
BX = flags
bit 0: running under an 80386 (32-bit) implementation
bit 1: processor returns to real mode for reflected interrupts
instead of V86 mode
bit 2: virtual memory supported
bit 3: reserved (undefined)
others reserved (zero)
CL = processor type (02h=80286, 03h=80386, 04h=80486)
DH = curr value of virtual master interrupt controller base interrupt
DL = curr value of virtual slave interrupt controller base interrupt
BUG: the Windows NT March 1993 beta reports version 0090h (0.144); this has
been fixed in the final release
SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
--------E-310401-----------------------------
INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
AX = 0401h
ES:(E)DI -> 128-byte buffer for host description (see below)
Return: CF clear if successful
AX = capabilities (see below)
CX = reserved (00h)
DX = reserved (00h)
buffer filled
CF set on error (DPMI 0.9 only)
SeeAlso: AX=0400h
Bitfields for capabilities:
bit 0 paged accessed/dirty supported (see AX=0506h,AX=0507h)
bit 1 exceptions restartability supported
bit 2 device mapping supported (see AX=0508h)
bit 3 conventional memory mapping supported (see AX=0509h)
bit 4 demand zero-fill supported
bit 5 write-protect client capability supported
bit 6 write-protect host capability supported
bits 7-15 reserved
Format of host description:
Offset Size Description
00h BYTE host major version number
01h BYTE host minor version number
02h 126 BYTEs ASCIZ host vendor name
--------E-310500-----------------------------
INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
AX = 0500h
ES:DI / ES:EDI -> buffer for memory information (see below)
Return: CF clear
Notes: 16-bit programs use ES:DI, 32-bit programs use ES:EDI
this function must be considered advisory because other applications
may affect the results at any time after the call
fields not supported by the DPMI implementation are filled with
FFFFFFFFh
DPMI 1.0+ supports this function solely for backward compatibility; use
AX=050Bh instead
SeeAlso: AX=0501h,AX=0604h
Format of memory information:
Offset Size Description
00h DWORD largest available block in bytes
04h DWORD maximum unlocked page allocation
08h DWORD maximum locked page allocation
0Ch DWORD total linear address space in pages
10h DWORD total unlocked pages
14h DWORD free pages
18h DWORD total physical pages
1Ch DWORD free linear address space in pages
20h DWORD size of paging file/partition in pages
24h 12 BYTEs reserved
--------E-310501-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
AX = 0501h
BX:CX = size in bytes
Return: CF clear if successful
BX:CX = linear address of block
SI:DI = memory block handle for resizing and freeing block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
Notes: no selectors are allocated
the memory block is allocated unlocked (can be locked with AX=0600h)
allocations are often page granular (see AX=0604h)
under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
for this function to fail even if AX=0500h indicates that enough
memory is available
SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
SeeAlso: INT 2F/AX=FB42h/BX=0002h
--------E-310502-----------------------------
INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
AX = 0502h
SI:DI = handle of memory block
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
Note: any selectors allocated for the memory block must also be freed,
preferably before freeing the memory block
SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
--------E-310503-----------------------------
INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
AX = 0503h
BX:CX = new size in bytes (nonzero)
SI:DI = handle of memory block
Return: CF clear if successful
BX:CX = new linear address
SI:DI = new handle of memory block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
(see AX=0000h)
Notes: any selectors pointing at the block must be updated
the previous memory block handle becomes invalid
an error is returned if the new size is 0
SeeAlso: AX=0102h,AX=0501h,AX=0505h
--------E-310504-----------------------------
INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
AX = 0504h
EBX = page-aligned linear address of memory block (00000000h if any
address is acceptable)
ECX = size in bytes (nonzero)
EDX = flags
bit 0: set to create committed pages instead of uncommitted pages
bits 1-31 reserved (0)
Return: CF clear if successful
EBX = linear address of memory block
ESI = memory block handle
CF set on error
AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
SeeAlso: AX=0501h,AX=0505h
--------E-310505-----------------------------
INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
AX = 0505h
ESI = memory block handle
ECX = new size in bytes (nonzero)
EDX = flags
bit 0: create committed pages rather than uncommitted pages
bit 1: segment descriptor update required
ES:EBX -> buffer containing array of WORDs with selectors
EDI = number of selectors in array
bits 2-31 reserved (0)
Return: CF clear if successful
EBX = new linear base address
ESI = new memory block handle
CF set on error
AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
the old memory block handle becomes invalid
if EDX bit 1 set and the block's base address is changed, DPMI updates
all descriptors for selectors in the update buffer which fall within
the memory block
SeeAlso: AX=0503h,AX=0504h
--------E-310506-----------------------------
INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
AX = 0506h
ESI = memory block handle
EBX = offset in memory block of first page
ECX = number of pages
ES:EDX -> array of WORDs to hold page attributes (see below)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (8001h,8023h,8025h) (see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
if EBX is not page-aligned, it will be rounded down
SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
Format of page attribute words:
bits 0-2 page type
000 uncommitted
001 committed
010 mapped (see AX=0508h,AX=0509h)
other currently unused
bit 3 page is read/write rather than read-only
bit 4 accessed/dirty bits supplied in bits 5 and 6
bit 5 page has been accessed (only valid if bit 4 set)
bit 6 page has been written (only valid if bit 4 set)
bits 7-15 reserved (0)
--------E-310507-----------------------------
INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
AX = 0507h
ESI = memory block handle
EBX = offset in memory block of first page
ECX = number of pages
ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
Return: CF clear if successful
CF set on error
AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
(see AX=0000h)
ECX = number of pages which have been set
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
if EBX is not page-aligned, it will be rounded down
SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
--------E-310508-----------------------------
INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
AX = 0508h
ESI = memory block handle
EBX = page-aligned offset within memory block of page(s) to be mapped
ECX = number of pages to map
EDX = page-aligned physical address of device
Return: CF clear if successful
CF set on error
AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
support of this function is optional; hosts are also allowed to support
the function for some devices but not others
SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
--------E-310509-----------------------------
INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
AX = 0509h
ESI = memory block handle
EBX = page-aligned offset within memory block of page(s) to map
ECX = number of pages to map
EDX = page-aligned linear address of conventional (below 1M) memory
Return: CF clear if successful
CF set on error
AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
support of this function is optional
SeeAlso: AX=0504h,AX=0508h,AX=0801h
--------E-31050A-----------------------------
INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
AX = 050AH
SI:DI = memory block handle
Return: CF clear if successful
SI:DI = size in bytes
BX:CX = base address
CF set on error
AX = error code (8023h) (see AX=0000h)
SeeAlso: AX=0501h,AX=0504h
--------E-31050B-----------------------------
INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
AX = 050Bh
ES:(E)DI -> 128-byte buffer for memory information (see below)
Return: CF clear if successful
CF set on error (DPMI 0.9 only)
Note: 16-bit programs use ES:DI, 32-bit programs must use ES:EDI
SeeAlso: AX=0500h
Format of memory information:
Offset Size Description
00h DWORD total allocated bytes of physical memory controlled by host
04h DWORD total allocated bytes of virtual memory controlled by host
08h DWORD total available bytes of virtual memory controlled by host
0Ch DWORD total allocated bytes of virtual memory for curr virtual mach
10h DWORD total available bytes of virtual memory for curr virtual mach
14h DWORD total allocated bytes of virtual memory for current client
18h DWORD total available bytes of virtual memory for current client
1Ch DWORD total locked bytes for current client
20h DWORD maximum locked bytes for current client
24h DWORD highest linear address available to current client
28h DWORD largest available memory block in bytes
2Ch DWORD minimum allocation unit in bytes
30h DWORD allocation alignment unit size in bytes
34h 76 BYTEs reserved (00h)
--------E-310600-----------------------------
INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
AX = 0600h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is locked
AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
Notes: pages at beginning and end will be locked if the region overlaps them
may be called multiple times for a given page; the DPMI host keeps a
lock count for each page
SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
--------E-310601-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
AX = 0601h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is unlocked
AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
Notes: pages at beginning and end will be unlocked if the region overlaps them
memory whose lock count has not reached zero remains locked
SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
--------E-310602-----------------------------
INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
AX = 0602h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is made pageable
AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
Notes: must relock all unlocked real mode memory before terminating process
for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
pages at beginning and end will be unlocked if the region overlaps them
pageability of real mode pages is binary, not a count
SeeAlso: AX=0600h,AX=0603h
--------E-310603-----------------------------
INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
AX = 0603h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is relocked
AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
Notes: pages at beginning and end will be relocked if the region overlaps them
pageability of real mode pages is binary, not a count
SeeAlso: AX=0602h
--------E-310604-----------------------------
INT 31 P - DPMI 0.9+ - GET PAGE SIZE
AX = 0604h
Return: CF clear if successful
BX:CX = page size in bytes
CF set on error
AX = error code (DPMI 1.0+)
8001h unsupported, 16-bit host
BUG: the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
unchanged
--------E-310700-----------------------------
INT 31 P - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
AX = 0700h
BX:CX = starting linear page number
SI:DI = number of pages to mark as paging candidates
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0701h,AX=0702h
--------E-310701-----------------------------
INT 31 P - DPMI 0.9+ - DISCARD PAGES
AX = 0701h
BX:CX = starting linear page number
SI:DI = number of pages to discard
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0700h,AX=0703h
--------E-310702-----------------------------
INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
AX = 0702h
BX:CX = starting linear address
SI:DI = number of bytes to mark as paging candidates
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
Notes: this function is advisory, and does not force immediate paging
partial pages will not be discarded
SeeAlso: AX=0700h,AX=0703h
--------E-310703-----------------------------
INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
AX = 0703h
BX:CX = starting linear address
SI:DI = number of bytes to mark as discarded
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
Notes: this function is advisory, and may be ignored by DPMI implementations
partial pages will not be discarded
SeeAlso: AX=0701h,AX=0702h
--------E-310800-----------------------------
INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
AX = 0800h
BX:CX = physical address (should be above 1 MB)
SI:DI = size in bytes
Return: CF clear if successful
BX:CX = linear address which maps the requested physical memory
CF set on error
AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
Notes: implementations may refuse this call because it can circumvent protects
the caller must build an appropriate selector for the memory
do not use for memory mapped in the first megabyte
SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
--------E-310801-----------------------------
INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
AX = 0801h
BX:CX = linear address returned by AX=0800h
Return: CF clear if successful
CF set on error
AX = error code (8025h) (see AX=0000h)
Note: should be called at end of access to device mapped with AX=0800h
SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
--------E-310900-----------------------------
INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
AX = 0900h
Return: CF clear
virtual interrupts disabled
AL = 00h if previously disabled
= 01h if previously enabled
AH preserved
Notes: the previous state may be restored simply by executing another INT 31
a CLI instruction may be used if the previous state is unimportant,
but should be assumed to be very slow due to trapping by the host
SeeAlso: AX=0901h,AX=0902h
--------E-310901-----------------------------
INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
AX = 0901h
Return: CF clear
virtual interrupts enabled
AL = 00h if previously disabled
= 01h if previously enabled
AH preserved
Notes: the previous state may be restored simply by executing another INT 31
a STI instruction may be used if the previous state is unimportant,
but should be assumed to be very slow due to trapping by the host
SeeAlso: AX=0900h,AX=0902h
--------E-310902-----------------------------
INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
AX = 0902h
Return: CF clear
AL = 00h if disabled
= 01h if enabled
Note: should be used rather than PUSHF because that instruction yields the
physical interrupt state rather than the per-client virtualized
interrupt flag
SeeAlso: AX=0900h,AX=0901h
--------E-310A00-----------------------------
INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
AX = 0A00h
DS:SI / DS:ESI -> case-sensitive ASCIZ vendor name or identifier
Return: CF clear if successful
ES:DI / ES:EDI -> FAR extended API entry point
DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
CF set on error
AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
Notes: extended API parameters are vendor-specific
DPMI 1.0+ supports this function solely for backward compatibility; use
INT 2F/AX=168Ah instead
this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
or QDPMI v1.0x; use INT 2F/AX=168Ah instead. It is supported by
386MAX v7.01.
SeeAlso: INT 2F/AX=168Ah
--------E-310B00-----------------------------
INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
AX = 0B00h
BX:CX = linear address
DL = size (1,2,4 bytes)
DH = type (00h execute, 01h write, 02h read/write)
Return: CF clear if successful
BX = watchpoint handle
CF set on error
AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
SeeAlso: AX=0212h,AX=0601h
--------E-310B01-----------------------------
INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
AX = 0B01h
BX = watchpoint handle
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
Note: the watchpoint handle is freed
SeeAlso: AX=0B00h
--------E-310B02-----------------------------
INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
AX = 0B02h
BX = watchpoint handle
Return: CF clear if successful
AX = status flags
bit 0: watch point has been executed since AX=0B00h or AX=0B03h
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
SeeAlso: AX=0B00h,AX=0B03h
--------E-310B03-----------------------------
INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
AX = 0B03h
BX = watchpoint handle
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
SeeAlso: AX=0B02h
--------E-310C00-----------------------------
INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
AX = 0C00h
ES:(E)DI -> resident service provider structure (see below)
Return: CF clear if successful
CF set on error
AX = error code (8015h,8021h,8025h) (see AX=0000h)
Note: calling this function declares an intent to provide resident
protected mode services after terminating with AX=0C01h
SeeAlso: AX=0303h,AX=0C01h
Format of resident service provider structure:
Offset Size Description
00h QWORD descriptor for 16-bit data segment
08h QWORD descriptor for 16-bit code segment (zeros if not supported)
10h WORD offset of 16-bit callback procedure
12h 2 BYTEs reserved
14h QWORD descriptor for 32-bit data segment
1Ch QWORD descriptor for 32-bit code segment (zeros if not supported)
24h DWORD offset of 32-bit callback procedure
--------E-310C01-----------------------------
INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
AX = 0C01h
BL = return code
DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
Return: never
Notes: should only be used if the program will only provide services to
other DPMI programs
any protected mode memory remains allocated to the program unless
explicitly freed before this call
must first call AX=0C00h or program will simply be terminated
SeeAlso: AX=0C00h,INT 21/AH=31h
--------E-310D00-----------------------------
INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
AX = 0D00h
ES:(E)DI -> shared memory allocation request structure (see below)
Return: CF clear if successful
request structure updated
CF set on error
AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
Note: first 16 bytes of memory block will be initialized to zeros on the
first allocation
SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
Format of shared memory allocation request structure:
Offset Size Description
00h DWORD requested length of shared memory block in bytes
04h DWORD (return) allocated length of block
08h DWORD (return) shared memory handle
0Ch DWORD (return) linear address of memory block
10h PWORD selector:offset32 of ASCIZ name for memory block
(name max 128 bytes)
16h 2 BYTEs reserved
18h 4 BYTEs reserved (00h)
--------E-310D01-----------------------------
INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
AX = 0D01h
SI:DI = shared memory block handle
Return: CF clear if successful
CF set on error
AX = error code (8023h) (see AX=0000h)
Notes: handle becomes invalid after this call
DPMI maintains separate global and virtual machine use counts for each
shared memory block; when the global use counts reaches zero, the
block is finally destroyed
SeeAlso: AX=0502h,AX=0D00h
--------E-310D02-----------------------------
INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
AX = 0D02h
SI:DI = shared memory block handle
DX = flags
bit 0: return immediately rather than suspending if serialization
unavailable
bit 1: shared rather than exclusive serialization
bits 2-15 reserved (0)
Return: CF clear if successful
CF set on error
AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
Notes: an exclusive serialization blocks any other serialization attempts for
the same block by another virtual machine; a shared serialization
blocks attempts at exclusive serialization by another virtual machine
hosts are not required to detect deadlock
a client's interrupt handler can cancel a serialization call which
caused it to block by calling AX=0D03h
SeeAlso: AX=0D00h,AX=0D03h
--------E-310D03-----------------------------
INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
AX = 0D03h
SI:DI = shared memory block handle
DX = flags
bit 0: release shared serialization rather than exclusive serialztn
bit 1: free pending serialization
bits 2-15 reserved (0)
Return: CF clear if successful
CF set on error
AX = error code (8002h,8023h) (see AX=0000h)
SeeAlso: AX=0D00h,AX=0D02h
--------E-310E00-----------------------------
INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
AX = 0E00h
Return: CF clear
AX = coprocessor status
bit 0: numeric coprocessor enabled for current client
bit 1: client is emulating coprocessor
bit 2: numeric coprocessor is present
bit 3: host is emulating coprocessor instructions
bits 4-7: coprocessor type
0000 none
0010 80287
0011 80387
0100 80486 with numeric coprocessor
other reserved
bits 8-15 not used
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
SeeAlso: AX=0E01h
--------E-310E01-----------------------------
INT 31 P - DPMI 1.0+ - SET EMULATION
AX = 0E01h
BX = coprocessor flag bits
bit 0: enable numeric coprocessor for current client
bit 1: client will emulate coprocessor
bits 2-15 not used
Return: CF clear if successful
CF set on error
AX = error code (8026h) (see AX=0000h)
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
SeeAlso: AX=0E00h
----------3157-------------------------------
INT 31 - Netroom3 DPMI.EXE v3.00 - ???
AH = 57h
AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
???
Return: ???
SeeAlso: INT 2C/AX=0000h"RM386"
----------315702-----------------------------
INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
AX = 5702h
DX = PSP segment of caller
STACK: WORD ???
WORD flags (bit 0 set if 32-bit program)
Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
Note: this function is called by the real-mode DPMI mode-switch entry point
SeeAlso: INT 2F/AX=1687h
--------v-32---------------------------------
INT 32 - VIRUS - reportedly used by "Tiny" Viruses
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
--------v-32---------------------------------
INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
--------M-330000-----------------------------
INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
AX = 0000h
Return: AX = status
0000h hardware/driver not installed
FFFFh hardware/driver installed
BX = number of buttons
0000h other than two
0002h two buttons (many drivers)
0003h Mouse Systems/Logitech three-button mouse
FFFFh two buttons
Notes: to use mouse on a Hercules-compatible monographics card in graphics
mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
and then call this function. Logitech drivers v5.01 and v6.00
reportedly do not correctly use Hercules graphics in dual-monitor
systems, while version 4.10 does.
the Logitech mouse driver contains the signature string "LOGITECH"
three bytes past the interrupt handler; many of the Logitech mouse
utilities check for this signature.
SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
--------M-330001-----------------------------
INT 33 - MS MOUSE - SHOW MOUSE CURSOR
AX = 0001h
SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
--------M-330002-----------------------------
INT 33 - MS MOUSE - HIDE MOUSE CURSOR
AX = 0002h
Note: multiple calls to hide the cursor will require multiple calls to
function 01h to unhide it.
SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
--------M-330003-----------------------------
INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS
AX = 0003h
Return: BX = button status
bit 0 left button pressed if 1
bit 1 right button pressed if 1
bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
CX = column
DX = row
SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
--------M-330004-----------------------------
INT 33 - MS MOUSE - POSITION MOUSE CURSOR
AX = 0004h
CX = column
DX = row
Note: the row and column are truncated to the next lower multiple of the cell
size; however, some versions of the Microsoft documentation
incorrectly state that the coordinates are rounded
SeeAlso: AX=0003h,INT 62/AX=0081h
--------M-330005-----------------------------
INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA
AX = 0005h
BX = button
0000h left
0001h right
0002h middle (Mouse Systems/Logitech mouse)
Return: AX = button states
bit 0 left button pressed if 1
bit 1 right button pressed if 1
bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
BX = number of times specified button has been pressed since last call
CX = column at time specified button was last pressed
DX = row at time specified button was last pressed
SeeAlso: AX=0006h,INT 62/AX=007Ch
--------M-330006-----------------------------
INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA
AX = 0006h
BX = button
0000h left
0001h right
0002h middle (Mouse Systems/Logitech mouse)
Return: AX = button states
bit 0 left button pressed if 1
bit 1 right button pressed if 1
bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
BX = number of times specified button has been released since last call
CX = column at time specified button was last released
DX = row at time specified button was last released
SeeAlso: AX=0005h,INT 62/AX=007Ch
--------M-330007-----------------------------
INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE
AX = 0007h
CX = minimum column
DX = maximum column
SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
--------M-330008-----------------------------
INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE
AX = 0008h
CX = minimum row
DX = maximum row
SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
--------M-330009-----------------------------
INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR
AX = 0009h
BX = column of cursor hot spot in bitmap (-16 to 16)
CX = row of cursor hot spot (-16 to 16)
ES:DX -> bitmap
16 words screen mask
16 words cursor mask
each word defines the sixteen pixels of a row, low bit
rightmost
SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
--------M-33000A-----------------------------
INT 33 - MS MOUSE - DEFINE TEXT CURSOR
AX = 000Ah
BX = hardware/software text cursor
0000h software
CX = screen mask
DX = cursor mask
0001h hardware
CX = start scan line
DX = end scan line
Note: when the software cursor is selected, the char/attribute data at the
current screen position is ANDed with the screen mask and then XORed
with the cursor mask
SeeAlso: AX=0009h,INT 62/AX=007Eh
--------M-33000B-----------------------------
INT 33 - MS MOUSE - READ MOTION COUNTERS
AX = 000Bh
Return: CX = number of mickeys mouse moved horizontally since last call
DX = number of mickeys mouse moved vertically
Notes: a mickey is the smallest increment the mouse can sense
positive values indicate down/right
SeeAlso: AX=0003h,AX=001Bh,AX=0027h
--------M-33000C-----------------------------
INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS
AX = 000Ch
CX = call mask
bit 0 call if mouse moves
bit 1 call if left button pressed
bit 2 call if left button released
bit 3 call if right button pressed
bit 4 call if right button released
bit 5 call if middle button pressed (Mouse Systems/Logitech mouse)
bit 6 call if middle button released (Mouse Sys/Logitech mouse)
ES:DX -> FAR routine
Notes: when the subroutine is called, it is passed the following values:
AX = condition mask (same bit assignments as call mask)
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
some versions of the Microsoft documentation incorrectly state that CX
bit 0 means call if mouse cursor moves, and swap the meanings of SI
and DI
SeeAlso: AX=0018h
--------M-33000D-----------------------------
INT 33 - MS MOUSE - LIGHT PEN EMULATION ON
AX = 000Dh
SeeAlso: AX=000Eh,INT 10/AH=04h
--------M-33000E-----------------------------
INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF
AX = 000Eh
SeeAlso: AX=000Dh
--------M-33000F-----------------------------
INT 33 - MS MOUSE - DEFINE MICKEY/PIXEL RATIO
AX = 000Fh
CX = number of mickeys per 8 pixels horizontally (default 8)
DX = number of mickeys per 8 pixels vertically (default 16)
SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
--------M-330010-----------------------------
INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
CX,DX = X,Y coordinates of upper left corner
SI,DI = X,Y coordinates of lower right corner
Note: mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
--------M-330010-----------------------------
INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
ES:DX -> update region list (see below)
Notes: mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
this version of the call is described in an August 1988 version of the
Genius Mouse programmer's reference; it has been changed to conform
to the Microsoft version shown above by version 9.06 (and possibly
earlier versions)
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
Format of update region list:
Offset Size Description
00h WORD left-most column
02h WORD top-most row
04h WORD right-most column
06h WORD bottom-most row
--------M-330011-----------------------------
INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
AX = 0011h
Return: AX = FFFFh
BX = number of buttons
SeeAlso: AX=0000h
--------M-330012-----------------------------
INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
AX = 0012h
BH = cursor width in words
CH = rows in cursor
BL = horizontal hot spot (-16 to 16)
CL = vertical hot spot (-16 to 16)
ES:DX -> bit map of screen and cursor maps
Return: AX = FFFFh if successful
SeeAlso: AX=0009h,AX=002Ah,AX=0035h
--------M-330013-----------------------------
INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD
AX = 0013h
DX = threshold speed in mickeys/second, 0000h = default of 64/second
Note: if speed exceeds threshold, the cursor's on-screen motion is doubled
SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
--------M-330014-----------------------------
INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES
AX = 0014h
CX = call mask (see AX=000Ch)
ES:DX -> FAR routine
Return: CX = call mask of previous interrupt routine
ES:DX = FAR address of previous interrupt routine
SeeAlso: AX=000Ch,AX=0018h
--------M-330015-----------------------------
INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS
AX = 0015h
Return: BX = size of buffer needed to store driver state
SeeAlso: AX=0016h,AX=0017h,AX=0042h
--------M-330016-----------------------------
INT 33 - MS MOUSE - SAVE DRIVER STATE
AX = 0016h
BX = size of buffer (see AX=0015h)
ES:DX -> buffer for driver state
Note: although not documented, many drivers appear to require BX on input
SeeAlso: AX=0015h,AX=0017h
--------M-330017-----------------------------
INT 33 - MS MOUSE - RESTORE DRIVER STATE
AX = 0017h
BX = size of buffer (see AX=0015h)
ES:DX -> buffer containing saved state
Notes: although not documented, many drivers appear to require BX on input
some mouse drivers range-check the values in the saved state based on
the current video mode; thus, the video mode should be restored
before the mouse driver's state is restored
SeeAlso: AX=0015h,AX=0016h
--------M-330018-----------------------------
INT 33 - MS MOUSE - SET ALTERNATE MOUSE USER HANDLER
AX = 0018h
CX = call mask (see below)
ES:DX -> FAR routine
Return: AX = 0018h if successful
= FFFFh on error
Notes: when the subroutine is called, it is passed the following values:
AX = condition mask (same bit assignments as call mask)
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
up to three handlers can be defined by separate calls to this function
some versions of the documentation erroneously reverse the order of
the bits in the call mask
SeeAlso: AX=000Ch,AX=0014h,AX=0019h
Bitfields for call mask:
bit 0 call if mouse moves
bit 1 call if left button pressed
bit 2 call if left button released
bit 3 call if right button pressed
bit 4 call if right button released
bit 5 call if shift button pressed during event
bit 6 call if ctrl key pressed during event
bit 7 call if alt key pressed during event
--------M-330019-----------------------------
INT 33 - MS MOUSE - RETURN USER ALTERNATE INTERRUPT VECTOR
AX = 0019h
CX = call mask (see AX=0018h)
Return: BX:DX = user interrupt vector
CX = call mask (0000h if not found)
Note: attempts to find a user event handler (defined by function 18h)
whose call mask matches CX
SeeAlso: AX=0018h
--------M-33001A-----------------------------
INT 33 - MS MOUSE - SET MOUSE SENSITIVITY
AX = 001Ah
BX = horizontal speed \
CX = vertical speed / (see AX=000Fh)
DX = double speed threshold (see AX=0013h)
SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
--------M-33001B-----------------------------
INT 33 - MS MOUSE - RETURN MOUSE SENSITIVITY
AX = 001Bh
Return: BX = horizontal speed
CX = vertical speed
DX = double speed threshold
SeeAlso: AX=000Bh,AX=001Ah
--------M-33001C-----------------------------
INT 33 - MS MOUSE - SET INTERRUPT RATE
AX = 001Ch
BX = rate
00h no interrupts allowed
01h 30 per second
02h 50 per second
03h 100 per second
04h 200 per second
Notes: only available on InPort mouse
values greater than 4 may cause unpredictable driver behavior
--------M-33001D-----------------------------
INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER
AX = 001Dh
BX = display page number
Note: the cursor will be displayed on the specified page
SeeAlso: AX=001Eh
--------M-33001E-----------------------------
INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER
AX = 001Eh
Return: BX = display page number
SeeAlso: AX=001Dh
--------M-33001F-----------------------------
INT 33 - MS MOUSE - DISABLE MOUSE DRIVER
AX = 001Fh
Return: AX = 001Fh unsuccessful
FFFFh successful
ES:BX = vector for INT 33 before mouse driver was first installed
Notes: restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
if you restore INT 33 to ES:BX, driver will be completely disabled
many drivers return AX=001Fh even though the driver has been disabled
SeeAlso: AX=0020h
--------M-330020-----------------------------
INT 33 - MS MOUSE - ENABLE MOUSE DRIVER
AX = 0020h
Return: AX = 0020h unsuccessful (or driver not installed)
FFFFh successful
Notes: restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
which were removed by function 1Fh
many drivers return AX=0020h even though the driver has been enabled
SeeAlso: AX=001Fh
--------M-330021-----------------------------
INT 33 - MS MOUSE - SOFTWARE RESET
AX = 0021h
Return: AX = FFFFh if mouse driver installed
BX = number of buttons (FFFFh = two buttons)
0021h if mouse driver not installed
Note: identical to funtion 00h, but does not reset the mouse
SeeAlso: AX=0000h
--------M-330022-----------------------------
INT 33 - MS MOUSE - SET LANGUAGE FOR MESSAGES
AX = 0022h
BX = language (see below)
Note: only available on international versions of the driver; US versions
ignore this call
SeeAlso: AX=0023h
Values for language:
00h English
01h French
02h Dutch
03h German
04h Swedish
05h Finnish
06h Spanish
07h Portugese
08h Italian
--------M-330023-----------------------------
INT 33 - MS MOUSE - GET LANGUAGE FOR MESSAGES
AX = 0023h
Return: BX = language (see AX=0022h)
Note: the US version of the driver always returns zero
SeeAlso: AX=0022h
--------M-330024-----------------------------
INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
AX = 0024h
Return: AX = FFFFh on error
otherwise,
BH = major version
BL = minor version
CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
SeeAlso: AX=004Dh,AX=006Dh
--------M-330025-----------------------------
INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
AX = 0025h
Return: AX = general information
bit 15: driver loaded as device driver rather than TSR
bit 14: driver is newer integrated type
bits 13,12: current cursor type
00 software text cursor
01 hardware text cursor
1X graphics cursor
bits 11-8: interrupt rate (see AX=001Ch)
bits 7-0: count of currently-active Mouse Display Drivers (MDD),
the newer integrated driver type
BX = cursor lock flag for OS/2 to prevent reentrancy problems
CX = mouse code active flag (for OS/2)
DX = mouse driver busy flag (for OS/2)
--------M-330026-----------------------------
INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
AX = 0026h
Return: BX = mouse-disabled flag
CX = maximum virtual X (for current video mode)
DX = maximum virtual Y
SeeAlso: AX=0031h
--------M-330026-----------------------------
INT 33 - Genius Mouse 9.06 - ???
AX = 0026h
Return: CX = 0204h if CX was 0105h on entry, else unchanged
--------M-330027-----------------------------
INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
AX = 0027h
Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
CX = horizontal mickeys moved since last call
DX = vertical mickeys moved since last call
SeeAlso: AX=000Bh
--------M-330028-----------------------------
INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
AX = 0028h
CX = new video mode (call is NOP if 0000h)
DH = Y font size (00h = default)
DL = X font size (00h = default)
Return: CL = status (00h = successful)
Note: DX is ignored unless the selected video mode supports font size control
SeeAlso: AX=0029h,INT 10/AH=00h
--------M-330029-----------------------------
INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
AX = 0029h
CX = previous video mode
0000h get first supported video mode
other get next supported mode after mode CX
Return: CX = first/next video mode (0000h = no more video modes)
DS:DX -> description of video mode or 0000h:0000h if none
Notes: the enumerated video modes may be in any order and may repeat
the description string (if available) is terminated by '$' followed by
a NUL byte
SeeAlso: AX=0028h
--------M-33002A-----------------------------
INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
AX = 002Ah
Return: AX = internal counter controlling cursor visibility
BX = cursor hot spot column
CX = cursor hot spot row
DX = mouse type (00h none, 01h bus, 02h serial, 03h InPort, 04h IBM,
05h Hewlett-Packard)
Note: the hot spot location is relative to the upper left corner of the
cursor block and may range from -128 to +127 both horizontally and
vertically
SeeAlso: AX=0009h,AX=0012h,AX=0035h
--------M-33002B-----------------------------
INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
AX = 002Bh
BX = active acceleration profile
0001h-0004h or FFFFh to restore default curves
ES:SI -> buffer containing acceleration profile data (see below)
Return: AX = success flag
SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
Format of acceleration profile data:
Offset Size Description
00h BYTE length of acceleration profile 1
01h BYTE length of acceleration profile 2
02h BYTE length of acceleration profile 3
03h BYTE length of acceleration profile 4
04h 32 BYTEs threshold speeds for acceleration profile 1
24h 32 BYTEs threshold speeds for acceleration profile 2
44h 32 BYTEs threshold speeds for acceleration profile 3
64h 32 BYTEs threshold speeds for acceleration profile 4
84h 32 BYTEs speedup factor for acceleration profile 1
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
A4h 32 BYTEs speedup factor for acceleration profile 2
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
C4h 32 BYTEs speedup factor for acceleration profile 3
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
E4h 32 BYTEs speedup factor for acceleration profile 4
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
104h 16 BYTEs name of acceleration profile 1 (blank-padded)
114h 16 BYTEs name of acceleration profile 2 (blank-padded)
124h 16 BYTEs name of acceleration profile 3 (blank-padded)
134h 16 BYTEs name of acceleration profile 4 (blank-padded)
Note: unused bytes in the threshold speed fields are filled with 7Fh and
unused bytes in the speedup factor fields are filled with 10h
--------M-33002C-----------------------------
INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
AX = 002Ch
Return: AX = status (0000h success)
BX = currently-active acceleration profile
ES:SI -> acceleration profile data (see AX=002Bh)
SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
--------M-33002D-----------------------------
INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
AX = 002Dh
BX = acceleration level
0001h-0004h to set profile, or FFFFh to get current profile
Return: AX = status
0000h successful
ES:SI -> 16-byte blank-padded name of acceleration profile
FFFEh invalid acceleration curve number
ES:SI destroyed
BX = active acceleration curve number
SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
--------M-33002E-----------------------------
INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
AX = 002Eh
BL = flag (if nonzero, fill ES:SI buffer with default names on return)
ES:SI -> 64-byte buffer for profile names (16 bytes per name)
Return: AX = status (0000h success)
ES:SI buffer filled with default names if BL nonzero on entry
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
--------M-33002F-----------------------------
INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
AX = 002Fh
Return: AX = status
Note: invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
SeeAlso: INT 2F/AH=53h
--------M-330030-----------------------------
INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
AX = 0030h
CX = command
0000h get status of BallPoint device
other set rotation angle and masks
BX = rotation angle (-32768 to 32767 degrees)
CH = primary button mask
CL = secondary button mask
Return: AX = button status (FFFFh if no BallPoint)
bit 5: button 1
bit 4: button 2
bit 3: button 3
bit 2: button 4
other: zero
BX = rotation angle (0-360 degrees)
CH = primary button mask
CL = secondary button mask
--------M-330031-----------------------------
INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
AX = 0031h
Return: AX = virtual X minimum
BX = virtual Y minimum
CX = virtual X maximum
DX = virtual Y maximum
Note: the minimum and maximum values are those set by AX=0007h and AX=0008h;
the default is minimum = 0 and maximum = absolute maximum
(see AX=0026h)
SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
--------M-330032-----------------------------
INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
AX = 0032h
Return: AX = active function flags (FFFFh for v8.10)
bit 15: function 0025h supported
bit 14: function 0026h supported
...
bit 0: function 0034h supported
BX = ??? (0000h) officially unused
CX = ??? (E000h) officially unused
DX = ??? (0000h) officially unused
--------M-330033-----------------------------
INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
AX = 0033h
CX = size of buffer
0000h get required buffer size
Return: AX = 0000h
CX = required size (0154h for Logitech v6.10, 0159h
for MS v8.10-8.20)
other
ES:DX -> buffer of CX bytes
Return: AX = 0000h
CX = number of bytes returned
ES:DX buffer filled (see below)
SeeAlso: AX=002Bh
Format of data buffer:
Offset Size Description
00h BYTE mouse type
01h BYTE current language
02h BYTE horizontal sensitivity (00h-64h)
03h BYTE vertical sensitivity (00h-64h)
04h BYTE double-speed threshold (00h-64h)
05h BYTE ballistic curve (01h-04h)
06h BYTE interrupt rate (01h-04h)
07h BYTE cursor override mask
08h BYTE laptop adjustment
09h BYTE memory type (00h-02h)
0Ah BYTE SuperVGA support (00h,01h)
0Bh BYTE rotation angle
0Ch BYTE ???
0Dh BYTE primary button (01h-04h)
0Eh BYTE secondary button (01h-04h)
0Fh BYTE click lock enabled (00h,01h)
10h 324 BYTEs acceleration profile data (see AX=002Bh)
154h 5 BYTEs ??? (Microsoft driver, but not Logitech)
--------M-330034-----------------------------
INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
AX = 0034h
Return: AX = status (0000h successful)
ES:DX -> ASCIZ initialization (.INI) file name
--------M-330035-----------------------------
INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
AX = 0035h
BX = function
FFFFh get current settings
Return: AX = 0000h
BH = style (see below)
BL = size (see below)
CH = threshold
CL = active flag (00h disabled, 01h enabled)
DX = delay
other
BH = style (00h normal, 01h reverse, 02h transparent)
BL = size (00h small "1", 01h medium "1.5", 02h large "2")
CH = threshold (00h-64h)
CL = active flag (00h disable size change, 01h enable)
DX = delay (0000h-0064h)
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=0012h,AX=002Ah
--------M-330042-----------------------------
INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
AX = 0042h
Return: AX = FFFFh successful
BX = buffer size in bytes for functions 50h and 52h
= 0000h MSMOUSE not installed
= 0042h functions 42h, 50h, and 52h not supported
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0015h,AX=0050h,AX=0052h
--------M-330043-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CONFIGURE MOUSE???
AX = 0043h
CX:BX -> ??? buffer (see below)
DL = ???
Return: ???
Notes: also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
this function is also supported by the Genius Mouse 9.06 driver
Format of buffer:
Offset Size Description
00h WORD I/O port address
02h BYTE ???
03h BYTE interrupt number
04h BYTE interrupt mask for interrupt controller
05h 5 BYTEs ???
--------M-330044CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
AX = 0044h
CX = CDEFh
Return: AX = new state of ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0045h
--------M-330045CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
AX = 0045h
CX = CDEFh
Return: AX = new state of ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0044h
--------M-330047-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET BUTTON ASSIGNMENTS
AX = 0047h
ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
Return: ???
Note: also supported by Genius Mouse 9.06 driver
SeeAlso: AX=0067h
--------M-330048BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET ???
AX = 0048h
BX = CDEFh
Return: CX = ???
BH = ???
BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
Note: also supported by Genius Mouse 9.06 driver
--------M-33004B-----------------------------
INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
AX = 004Bh
Return: ES:DI -> signature/description string if installed
Note: the signature string in v7.04d is
"Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
--------M-33004CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ??? FLAG
AX = 004Ch
BX = CDEFh
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=006Ch
--------M-33004D-----------------------------
INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
AX = 004Dh
Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
Notes: also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
mouse drivers
in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
follows the above copyright message (KYE Corp. manufactures the
driver)
SeeAlso: AX=0024h,AX=006Dh
--------M-33004F-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ENABLE MOUSE
AX = 004Fh
Return: nothing
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0043h,AX=0053h
--------M-330050-----------------------------
INT 33 - PCMOUSE - SAVE MSMOUSE STATE
AX = 0050h
BX = buffer size (ignored by some driver versions)
ES:DX -> buffer
Return: AX = FFFFh if successful
Notes: the buffer must be large enough to hold the entire state, or following
data will be overwritten by state data in versions which ignore BX;
use INT 33/AX=0042h to get the required size
this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0042h,AX=0052h
--------M-330052-----------------------------
INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
AX = 0052h
BX = buffer size (ignored by some driver versions)
ES:DX -> buffer
Return: AX = FFFFh if successful
Note: also supported by Genius Mouse 9.06 driver
SeeAlso: AX=0050h
--------M-330053-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - DISABLE MOUSE
AX = 0053h
Return: nothing
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0043h,AX=004Fh
--------M-330054CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SELECT ULTRARES ACCELERATION LEVEL
AX = 0054h
CX = CDEFh
BX = ??? (NOP if <= 0000h)
Return: ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=005Ah
--------M-330055-----------------------------
INT 33 - Kraft Mouse - GET ???
AX = 0055h
Return: CX = ???
DX = ???
ES = ???
--------M-330058-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
AX = 0058h
Return: AX = CS of driver
CX:BX = original INT 33 vector
DX = ???
Note: this function is also supported by the Genius Mouse 9.06 driver
--------M-33005A-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ULTRARES ACCELERATIONS
AX = 005Ah
CX = number of WORDs to copy (max 0014h, but not range-checked)
DX:SI -> buffer containing thresholds??? (CX words)
DX:BX -> buffer containing acceleration values???
(9*14h words, only first CX of each 14h used)
???
Return: CF clear
???
Note: this function is also supported by Genius Mouse 9.06
SeeAlso: AX=0054h
--------M-330061BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
AX = 0061h
BX = CDEFh
Return: CX = ???
Note: also supported by Genius Mouse 9.06
--------M-330067-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET MOUSE BUTTONS???
AX = 0067h
Return: BL = number of buttons???
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0047h
--------M-33006CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CLEAR ??? FLAG
AX = 006Ch
BX = CDEFh
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=004Ch
--------M-33006D-----------------------------
INT 33 - MS MOUSE - GET VERSION STRING
AX = 006Dh
Return: ES:DI -> Microsoft version number of resident driver (see below)
Notes: also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
drivers
the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
Microsoft version as 7.00 even though they do not support any of the
functions from 0025h through 002Dh supported by the MS 7.00 driver
(the Genius Mouse driver supports function 0026h, but it differs
from the Microsoft function)
SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
Format of Microsoft version number:
Offset Size Description
00h BYTE major version
01h BYTE minor version (BCD)
--------M-330070BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
AX = 0070h
BX = ABCDh
Return: AX = ABCDh if installed
BX:CX -> data structure (see below)
Notes: this function is also supported by the Genius Mouse 9.06 driver
the v7.01 POPUP.COM and menu drivers also check for the signature
CDh ABh BAh DCh at offset -2Ch from the interrupt handler
if POPUP is not loaded, the returned data structure contains the proper
signature at offset 00h, but not at offset 08h
Format of data structure:
Offset Size Description
00h WORD signature ABCDh
02h DWORD pointer to info structure???
06h 2 BYTEs ???
08h WORD signature ABCDh
Format of info structure:
Offset Size Description
00h WORD driver version
02h 8 BYTEs ???
0Ah WORD segment of ???
???
--------M-330072BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
AX = 0072h
BX = ABCDh
Return: ???
Note: this function is also supported by the Genius Mouse 9.06 driver
--------M-330073BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET BUTTON ASSIGNMENTS
AX = 0073h
BX = CDEFh
ES:DX -> 3-byte buffer for button assignments
Return: CX = number of buttons???
ES:DX buffer filled (default is "LMR")
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0067h
--------M-33012E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 012Eh
BL = ???
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Eh,AX=022Eh
--------M-33022E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 022Eh
BL = ???
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Eh,AX=012Eh
--------M-33136C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 136Ch
BX = ???
Return: AX = ???
BX = ???
--------M-33146C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
AX = 146Ch
BL = function
00h set ???
BH = new value (zero/nonzero to clear/set)
else get ???
Return: ???
--------M-33156C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
AX = 156Ch
Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
ES:SI -> version string, terminated with CRLF
--------M-33166C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 166Ch
BL = ???
00h ???
01h ???
other ???
BH = new value of ???
Return: AX = FFFFh
--------M-33176C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 176Ch
???
Return: ???
--------M-33186C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 186Ch
???
Return: ???
--------M-33196C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 196Ch
???
Return: ???
--------M-331A6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 1A6Ch
Return: AX = FFFFh
BX = ???
CX = ???
SeeAlso: AX=1B6Ch
--------M-331B6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - SET ???
AX = 1B6Ch
BX = new value for ??? (0000h-0003h)
Return: AX = FFFFh
SeeAlso: AX=1A6Ch
--------M-331C6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 1C6Ch
BX = ???
<42h ???
=42h ???
>42h ???
ES:DI -> ???
Return: AX = ???
--------M-331D6C-----------------------------
INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
AX = 1D6Ch
Return: BX = direction (0=north, 1=south, 2=east, 3=west)
SeeAlso: AX=1E6Ch
--------M-331E6C-----------------------------
INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
AX = 1E6Ch
BX = direction (0=north, 1=south, 2=east, 3=west)
SeeAlso: AX=1D6Ch
--------M-331F6C-----------------------------
INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
AX = 1F6Ch
Return: BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso: AX=002Ch,AX=236Ch
--------M-33206C-----------------------------
INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
AX = 206Ch
BX = parameter (00h = right, FFh = left)
SeeAlso: AX=216Ch
--------M-33216C-----------------------------
INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
AX = 216Ch
Return: BX = parameter (00h = right, FFh = left)
SeeAlso: AX=206Ch
--------M-33226C-----------------------------
INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
AX = 226Ch
Note: this only frees memory; does not restore hooked interrupts
--------M-33236C-----------------------------
INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
AX = 236Ch
BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso: AX=002Ch,AX=1F6Ch
--------M-33246C-----------------------------
INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
AX = 246Ch
ES:DX -> parameter table buffer (see below)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
Format of parameter table:
Offset Size Description
00h WORD baud rate divided by 100 (serial mouse only)
02h WORD emulation (serial mouse only)
04h WORD report rate (serial mouse only)
06h WORD firmware revision (serial mouse only)
08h WORD 00h (serial mouse only)
0Ah WORD port (serial mouse only)
0Ch WORD physical buttons
0Eh WORD logical buttons
--------M-33256CBX0000-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0000h
CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
--------M-33256CBX0001-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0001h
CX = emulation
00h 5 byte packed binary
01h 3 byte packed binary
02h hexadecimal
03h relative bit pad
04h not supported
05h MM Series
06h not supported
07h Microsoft
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
--------M-33256CBX0002-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0002h
CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
--------M-33256CBX0003-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0003h
CX = port (1, 2)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
--------M-33256CBX0004-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
AX = 256Ch
BX = 0004h
CX = buttons (2, 3)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=276Ch
--------M-33266C-----------------------------
INT 33 - LOGITECH MOUSE - GET VERSION???
AX = 266Ch
Return: BX = 'SS'
CH = '4' major version number
CL = '1' minor version number
SeeAlso: AX=006Dh
--------M-33276C-----------------------------
INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
AX = 276Ch
SeeAlso: AX=256Ch
--------M-333000-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
AX = 3000h
Return: AX = FFFFh if installed
BX = version number (BH = major, BL = minor)
Program: SMD is a programmer's library by Andy Hakim which provides a
graphics-style mouse cursor in text mode. PrecisePoint is an
SMD-based TSR which replaces the block mouse cursor in text
applications.
SeeAlso: AX=0000h,AX=3001h,AX=3003h
--------M-333001-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
AX = 3001h
Return: AX = status (0000h = disabled, 0001h = enabled)
Note: SMD remains disabled if running under Desqview or in graphics mode
SeeAlso: AX=0001h,AX=0002h,AX=3002h
--------M-333002-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
AX = 3002h
Return: AX = status (0000h = disabled, 0001h = enabled)
SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
--------M-333003-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
AX = 3003h
BL = data structure selector
00h Primary Bitmap (used for 25 line mode)
01h Secondary Bitmap (used for 43/50 line modes)
02h Sacrifice Character Map
03h Program Information
Return: ES:DX -> selected data structure
SeeAlso: AX=3000h
Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]
Offset Size Description
00h BYTE vertical size of bitmap (00h - 10h)
01h BYTE horizontal size of bitmap (00h - 10h)
02h BYTE vertical hotspot position (00h - 10h)
03h BYTE horizontal hotspot position (00h - 10h)
04h 16 WORDs cursor bitmap data
14h 16 WORDs screen bitmap data
Format of Sacrifice Character Map [SMD_SMAP_STRUCT]
Offset Size Description
00h BYTE bytes are character values (00h-FFh) used in place of the
01h BYTE actual character for the corresponding position on the screen
02h BYTE +--------------+ occupied by part or all of the mouse
03h BYTE | 0h | 1h | 2h | cursor
04h BYTE |----+----+----|
05h BYTE | 3h | 4h | 5h |
06h BYTE |----+----+----|
07h BYTE | 6h | 7h | 8h |
08h BYTE +--------------+
Format of Program Information [SMD_INFO_STRUCT]
Offset Size Description
00h WORD segment of old interrupt 33h handler
02h WORD offset of old interrupt 33h handler
04h WORD PSP of SMD
06h BYTE ENABLE/DISABLE manual setting status
07h BYTE ENABLE/DISABLE internal usage status
--------M-333004-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3004h
SeeAlso: AX=3000h
--------M-333005-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3005h
SeeAlso: AX=3000h
--------M-334F00-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 4F00h
Return: AX = 004Fh if supported
BX = ???
ES:DI -> ???
SeeAlso: AX=4F01h
--------M-334F01-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 4F01h
ES = ???
Return: AX = 004Fh if supported
ES:DI -> ???
SeeAlso: AX=4F00h
--------T-33FFE6-----------------------------
INT 33 - Switch-It v3.23 - GET ??? PROGRAM
AX = FFE6h
CX = length of buffer
ES:DI -> buffer for program name
Return: ES:DI buffer filled
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFE7-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFE7h
Return: AX = ???
--------T-33FFE8-----------------------------
INT 33 - Switch-It v3.23 - ???
AX = FFE8h
CX = length of name including terminating NUL
DS:SI -> ASCIZ program pathname
--------T-33FFE9-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFE9h
BX = ???
--------T-33FFEA-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFEAh
BL = ???
--------T-33FFEB-----------------------------
INT 33 - Switch-It v3.23 - SET ??? FLAG
AX = FFEBh
--------T-33FFEC-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFECh
BL = ???
--------T-33FFED-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFEDh
Return: AX = ??? (0001h)
BX = ???
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFEE-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFEEh
Return: AX = ???
--------T-33FFEF-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFEFh
Return: BX:AX -> ???
--------T-33FFF0-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFF0h
BL = ???
--------T-33FFF1-----------------------------
INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
AX = FFF1h
Return: BX:AX -> ASCIZ pathname of configuration file
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFF2-----------------------------
INT 33 - Switch-It v3.23 - SET ??? FLAG
AX = FFF2h
Return: AL = 01h
--------T-33FFF3-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF3h
Return: AX = ???
--------T-33FFF4-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFF4h
BX = ???
CX = ???
--------T-33FFF5-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF5h
Return: AX = ???
--------T-33FFF6-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF6h
Return: AX = ???
--------T-33FFF7-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF7h
BX = index of ???
Return: AX = ???
--------T-33FFF8-----------------------------
INT 33 - Switch-It v3.23 - ???
AX = FFF8h
BX = ???
CX = length of program name, including terminating NUL
DS:SI -> ASCIZ program pathname
Return: ???
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFF9-----------------------------
INT 33 - Switch-It v3.23 - NOP
AX = FFF9h
--------T-33FFFA-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFFAh
BX = index of program
SeeAlso: AX=FFFBh,AX=FFFCh
--------T-33FFFB-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFFBh
BX = index of program
Return: AX = ??? (0000h or 0001h)
SeeAlso: AX=FFFAh,AX=FFFCh
--------T-33FFFC-----------------------------
INT 33 - Switch-It v3.23 - CLEAR ???
AX = FFFCh
BX = index of program
SeeAlso: AX=FFFAh,AX=FFFCh
--------T-33FFFD-----------------------------
INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
AX = FFFDh
Return: AX = first available segment???
BX = paragraph of top of conventional memory
DX = PSP segment of SI.EXE
--------T-33FFFE-----------------------------
INT 33 - Switch-It v3.23 - INSTALLATION CHECK
AX = FFFEh
Return: BX = ???
DX = 5349h ("SI")
--------T-33FFFF-----------------------------
INT 33 - Switch-It v3.23 - ???
AX = FFFFh
BX = ???
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------r-34---------------------------------
INT 34 - FLOATING POINT EMULATION - OPCODE D8h
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of D8h
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 35,INT 3E
--------r-35---------------------------------
INT 35 - FLOATING POINT EMULATION - OPCODE D9h
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of D9h
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 34,INT 36
--------r-36---------------------------------
INT 36 - FLOATING POINT EMULATION - OPCODE DAh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DAh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 35,INT 37
--------r-37---------------------------------
INT 37 - FLOATING POINT EMULATION - OPCODE DBh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DBh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 36,INT 38
--------r-38---------------------------------
INT 38 - FLOATING POINT EMULATION - OPCODE DCh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DCh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 37,INT 39
--------O-38---------------------------------
INT 38 - PC-MOS/386 v3.0 - API
Note: this API was been moved to INT D4h sometime between versions 3.0 and
5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
12h
SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
--------r-39---------------------------------
INT 39 - FLOATING POINT EMULATION - OPCODE DDh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DDh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 38,INT 3A
--------r-3A---------------------------------
INT 3A - FLOATING POINT EMULATION - OPCODE DEh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DEh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 39,INT 3B
--------r-3B---------------------------------
INT 3B - FLOATING POINT EMULATION - OPCODE DFh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DFh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 3A,INT 3C
--------r-3C---------------------------------
INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
Notes: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
the generated code is CD 3C xy mm ....
where xy is a modified ESC instruction and mm is the modR/M byte.
The xy byte appears to be encoded as
s s 0 1 1 x x x or s s 0 0 0 x x x
where "ss" specifies the segment override:
00 -> DS:
01 -> SS:
10 -> CS:
11 -> ES:
SeeAlso: INT 3B,INT 3D
--------r-3D---------------------------------
INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
Notes: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 3C,INT 3E
--------r-3E---------------------------------
INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
Notes: the two bytes following the INT 3E instruction are the subcode and
a NOP (90h), except for subcodes DCh and DEh, where the second byte
is a register count (01h-08h)
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT 3D
Values for subcode:
Subcode Function
DCh load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
top of the stack prior to the INT 3E with the 8087 register contents
DEh load 8087 registers from top of 8086 stack; ST0 is furthest from top
of 8086 stack
E0h round TOS and R1 to single precision, compare, pop twice
returns AX=8087 status word, FLAGS=8087 condition bits
E2h round TOS and R1 to double precision, compare, pop twice
returns AX=8087 status word, FLAGS=8087 condition bits
Note: buggy in TPas5.5, because it sets the 8087 precision control
field to the undocumented value 01h; this results in actually
rounding to single precision
E4h compare TOS/R1 with two POP's
returns FLAGS=8087 condition bits
E6h compare TOS/R1 with POP
returns FLAGS=8087 condition bits
E8h FTST (check TOS value)
returns FLAGS=8087 condition bits
EAh FXAM (check TOS value)
returns AX=8087 status word
ECh sine(ST0)
EEh cosine(ST0)
F0h tangent(ST0)
F2h arctangent(ST0)
F4h ST0 = ln(ST0)
F6h ST0 = log2(ST0)
F8h ST0 = log10(ST0)
FAh ST0 = e**ST0
FCh ST0 = 2**ST0
FEh ST0 = 10**ST0
--------r-3F---------------------------------
INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
Notes: INT 3F is the default, and may be overridden while linking
this vector is modified but not restored by Direct Access v4.0, and
may be left dangling by other programs written with the same version
of compiled BASIC
SeeAlso: INT FE"OVERLAY"
--------r-3F---------------------------------
INT 3F - Microsoft Dynamic Link Library manager
SeeAlso: INT 21/AH=4Bh
--------B-40---------------------------------
INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
--------h-40---------------------------------
INT 40 - Z100 - Master 8259 - Parity error or S100 error
SeeAlso: INT 41"Z100",INT FF"Z100"
--------O-40---------------------------------
INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
AL = operation
00h close file
40h open file for reading
80h open file for writing
C0h open file for random access
DS:BX -> CR-terminated filename
Return: AL = file handle (00h if file closed or could not be opened)
Note: the Acorn BBC Master 512 is an 80186-based add-on board for the
6502-based Master 128 which uses the original CPU as an I/O processor
SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
--------B-41---------------------------------
INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
Note: the default parameter table array is located at F000h:E401h in 100%
compatible BIOSes; the pointer may be overridden by the hard disk
controller's BIOS to support drive formats unknown to the ROM BIOS
SeeAlso: INT 13/AH=09h,INT 1E,INT 46
Format of fixed disk parameters:
Offset Size Description
00h WORD number of cylinders
02h BYTE number of heads
03h WORD starting reduced write current cylinder (XT only, 0 for others)
05h WORD starting write precompensation cylinder number
07h BYTE maximum ECC burst length (XT only)
08h BYTE control byte
bits 0-2: drive option (XT only, 0 for others)
bit 3: set if more than 8 heads (AT and later only)
bit 4: always 0
bit 5: set if manufacturer's defect map on max cylinder+1
(AT and later only)
bit 6: disable ECC retries
bit 7: disable access retries
09h BYTE standard timeout (XT only, 0 for others)
0Ah BYTE formatting timeout (XT and WD1002 only, 0 for others)
0Bh BYTE timeout for checking drive (XT and WD1002 only, 0 for others)
0Ch WORD cylinder number of landing zone (AT and later only)
0Eh BYTE number of sectors per track (AT and later only)
0Fh BYTE reserved
--------h-41---------------------------------
INT 41 - Z100 - Master 8259 - Processor Swap
SeeAlso: INT 40"Z100",INT 42"Z100"
--------O-41---------------------------------
INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
AL = function
01h put bytes sequentially
02h put bytes, ignoring sequential pointer
03h get bytes sequentially
04h get bytes, ignoring sequential pointer
05h get media title and boot option
06h get current device and directory
07h get current library and device
08h search directory
DS:BX -> control block (see below)
Return: CF clear if successful
CF set on error
AL = 00h if operation attempted
AL unchanged if unsupported function
SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
Format of control block:
Offset Size Description
00h BYTE file handle
01h DWORD pointer to data in either I/O processor or Tube processor
05h DWORD number of bytes to be transferred
09h DWORD transfer address
--------G-4112-------------------------------
INT 41 P - MS Windows debugging kernel - "OutputDebugString"
AH = 12h
???
Return: ???
SeeAlso: AH=50h
--------G-4150-------------------------------
INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
AH = 50h
???
Return: ???
SeeAlso: AH=12h
--------V-42---------------------------------
INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
SeeAlso: INT 10
Note: not used by PS/2 built-in VGA or XGA
--------h-42---------------------------------
INT 42 - Z100 - Master 8259 - Timer
SeeAlso: INT 41"Z100",INT 43"Z100"
--------b-42---------------------------------
INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
Note: if the second WD1002 controller in the system finds INT 40 already in
use, it uses this vector to cascade to the first controller's BIOS
SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
--------O-42---------------------------------
INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
AL = byte to be written
BH = file handle
Return: flags destroyed
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
--------V-43---------------------------------
INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
points at graphics data for characters 00h-7Fh of the current font
SeeAlso: INT 1F,INT 44"VIDEO"
--------h-43---------------------------------
INT 43 - Z100 - Master 8259 - Slave 8259 input
Note: slave runs in special fully nested mode
SeeAlso: INT 42"Z100",INT 44"Z100"
--------O-43---------------------------------
INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
BH = file handle
Return: CF clear if successful
AL = byte read from file
CF set on error
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
--------V-44---------------------------------
INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
points at graphics data for current character font
SeeAlso: INT 1F,INT 43"VIDEO"
--------N-44---------------------------------
INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
--------I-44---------------------------------
INT 44 - IBM 3270-PC High Level Language API
DS:SI -> parameter control block
--------h-44---------------------------------
INT 44 - Z100 - Master 8259 - Serial A
SeeAlso: INT 43"Z100",INT 45"Z100"
--------v-44---------------------------------
INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
--------O-4400-------------------------------
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
AH = 00h
AL = function
00h get current filing system
Return: AL = filing system (see below)
01h get address of commandline tail
Return: BX buffer filled with address of command tail in I/O
processor address space (use INT 4A/AL=05h to
retrieve)
FFh flush all files onto secondary storage
BX -> 4-byte data buffer
Note: the commandline tail is terminated with a carriage return (0Dh)
SeeAlso: INT 40"Acorn",INT 45"Acorn"
Values for filing system:
00h none
01h 1200 bps cassette
02h 300 bps cassette
03h ROM FS
04h DFS
05h ANFS/NFS
06h TFS
08h ADFS
--------O-44---------------------------------
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
AH = nonzero file handle
AL = function
00h get sequential pointer for file
01h set sequential pointer for file
02h get length of file
BX -> 4-byte data buffer
Return: BX buffer updated if appropriate
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
--------h-45---------------------------------
INT 45 - Z100 - Master 8259 - Serial B
SeeAlso: INT 44"Z100",INT 46"Z100"
--------O-45---------------------------------
INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
AL = function
00h save block of memory as file
01h update directory entry for existing file
02h set load address for existing file
03h set execution address for existing file
04h set attributes for existing file
05h read directory
06h delete file
FFh load file
DS:BX -> control block (see below)
Return: FLAGS destroyed
AL = file type
00h not found
01h file found
02h directory found
FFh protected file
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
Format of control block:
Offset Size Description
00h WORD address of CR-terminated filename
02h DWORD load address of file
06h DWORD execution address of file
0Ah DWORD start address of data to save
0Eh DWORD end address of data to save, or file attributes
file attributes in low byte (see below)
other three bytes are filing-system specific file attributes
Bitfields for file attributes:
bit 0 no owner read access
bit 1 no owner write access
bit 2 not executable by owner
bit 3 not deletable by owner
bit 4 no public read access
bit 5 no public write access
bit 6 not executable with public access
bit 7 not deletable with public access
--------B-46---------------------------------
INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
SeeAlso: INT 13/AH=09h,INT 41
--------h-46---------------------------------
INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
SeeAlso: INT 45"Z100",INT 47"Z100"
--------O-46---------------------------------
INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
Return: CF clear if successful
AL = character read
CF set on error
AL = error code
SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
--------h-47---------------------------------
INT 47 - Z100 - Master 8259 - Printer
SeeAlso: INT 46"Z100",INT 48"Z100"
--------O-47---------------------------------
INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
AL = character to be written
Return: FLAGS destroyed
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
--------b-47---------------------------------
INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
Desc: used by the second WD1002-27X controller to cascade to the first
controller's INT 40
SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
----------478000-----------------------------
INT 47 - SQL Base - DATABASE ENGINE API
AX = 8000h
DS:BX -> parameter block, first word is function number
Program: SQL Base is a network-oriented database engine by Gupta Technologies
SeeAlso: AX=8001h
Values for function number:
01h "SQLFINI" initalialize application's use of the database
02h "SQLFDON" application is done using the database
03h "SQLFCON" connect to a cursor/database
04h "SQLFDIS" disconnect from a cursor/database
05h "SQLFCOM" compile a SQL command
06h "SQLFEXE" execute a SQL command
07h "SQLFCEX" compile and execute a SQL command
08h "SQLFCMT" commit a transaction to the database
09h "SQLFDES" describe the items of a SELECT statement
0Ah "SQLFGFI" get fetch information
0Bh "SQLFFBK" fetch previous result row from SELECT statement
0Ch "SQLFFET" fetch next result row from SELECT statement
0Dh "SQLFEFB" enable fetch backwards
0Eh "SQLFPRS" position in result set
0Fh "SQLFURS" undo result set
10h "SQLFNBV" get number of bind variables
11h "SQLFBND" bind data variables
12h "SQLFBNN" bind numerics
13h "SQLFBLN" bind long number
14h "SQLFBLD" bind long data variables
15h "SQLFSRS" start restriction set processing
16h "SQLFRRS" restart restriction set processing
17h "SQLFCRS" close restriction set
18h "SQLFDRS" drop restriction set
19h "SQLFARF" apply Roll Forward journal
1Ah "SQLFERF" end Roll Forward journal
1Bh "SQLFSRF" start Roll Forward journal
1Ch "SQLFSTO" store a compiled SQL command
1Dh "SQLFRET" retrieve a compiled SQL command
1Eh "SQLFDST" drop a stored command
1Fh "SQLFCTY" get command type
20h "SQLFEPO" get error position
21h "SQLFGNR" get number of rows
22h "SQLFNSI" get number of select items
23h "SQLFRBF" get Roll Back flag
24h "SQLFRCD" get return code
25h "SQLFROW" get number of ROWs
26h "SQLFSCN" set cursor name
27h "SQLFSIL" set isolation level
28h "SQLFSLP" set log parameters
29h "SQLFSSB" set select buffer
2Ah "SQLFSSS" set sort space
2Bh "SQLFRLO" read long
2Ch "SQLFWLO" write long
2Dh "SQLFLSK" long seek
2Eh "SQLFGLS" get long size
2Fh "SQLFELO" end long operation
30h "SQLFRBK" roll back a transaction from the database
31h "SQLFERR" error message
32h "SQLFCPY" copy
33h "SQLFR01" reserved
34h "SQLFSYS" system
35h "SQLFSTA" statistics
36h "SQLFR02" reserved
37h "SQLFXAD" extra add
38h "SQLFXCN" extra character to number
39h "SQLFXDA" extra date add
3Ah "SQLFXDP" extra date picture
3Bh "SQLFXDV" extra divide
3Ch "SQLFXML" extra multiply
3Dh "SQLFXNP" extra number picture
3Eh "SQLFXPD" extra picture date
3Fh "SQLFXSB" extra subtract
40h "SQLFINS" install database
41h "SQLFDIN" deinstall database
42h "SQLFDIR" directory of databases
43h "SQLFTIO" timeout
44h "SQLFFQN" get fully qualified column name
45h "SQLFEXP" explain execution plan
46h "SQLFFER" get full error
47h "SQLFBKP" begin online backup
48h "SQLFRDC" read backup data chunk
49h "SQLFEBK" end backup
4Ah "SQLFRES" begin restore from backup
4Bh "SQLFWDC" write backup data chunk for restore
4Ch "SQLFRRD" recover restored database to consistent state
4Dh "SQLFERS" end restore
4Eh "SQLFNRR" return number of result set rows
4Fh "SQLFSTR" start restriction mode
50h "SQLFSPR" stop restriction mode
51h "SQLFCNC" connect 2
52h "SQLFCNR" connect with no recovery
53h "SQLFOMS" set output message size
54h "SQLFIMS" set input message size
55h "SQLFSCP" set cache pages
56h "SQLFDSC" describe items of a SELECT statement (external)
57h "SQLFLAB" get label info for items in SELECT statement
58h "SQLFCBV" clear bind variables
59h "SQLFGET" get database information
5Ah "SQLFSET" set database information
5Bh "SQLFTEC" translate error code
----------478001-----------------------------
INT 47 - SQL Base - GET VERSION NUMBER
AX = 8001h
Return: ???
Program: SQL Base is a network-oriented database engine by Gupta Technologies
SeeAlso: AX=8000h
--------B-48---------------------------------
INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
SeeAlso: INT 49"PCjr"
--------h-48---------------------------------
INT 48 - Z100 - Slave 8259 - S100 vectored line 0
SeeAlso: INT 47"Z100",INT 49"Z100"
--------N-48---------------------------------
INT 48 - Watstar PC Network data pointer 1
SeeAlso: INT 49"Watstar"
--------O-48---------------------------------
INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
Return: FLAGS destroyed
Note: writes a carriage return (0Dh) followed by a linefeed (0Ah)
SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
--------b-48---------------------------------
INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
Note: the second WD1002-27X controller in a system uses the low byte to
store the number of drives controlled by the second controller,
and the high word for temporary storage during track recalculation;
the first controller uses offsets 74h-77h in the BIOS data area
(see MEMORY.LST) to store data
SeeAlso: INT 47"SuperBIOS"
----------48---------------------------------
INT 48 U - Compaq UILIB.EXE - API
AX = function (see below)
BX = call type (0002h) (see AX=1A70h)
???
Return: ???
Note: returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
listed below
SeeAlso: AX=1A70h
Values for function:
1000h 1160h 12D0h 1430h 1570h 1680h 17F0h 1920h 1A90h
1010h 1170h 12E0h 1440h 1578h 1690h 1800h 1930h 1AA0h
1020h 1180h 12F0h 1450h 1580h 16A0h 1810h 1940h
1030h 1190h 1300h 1460h 1590h 16B0h 1820h 1950h
1040h 11A0h 1310h 1470h 1594h 16C0h 1830h 1960h
1050h 11B0h 1320h 1480h 1598h 16D0h 1840h 1970h
1060h 11C0h 1330h 1490h 15A0h 16E0h 1848h 1980h
1070h 11D0h 1340h 14A0h 15B0h 16F0h 1850h 1990h
1080h 11E0h 1350h 14B0h 15C0h 1700h 1860h 19A0h
1090h 11F0h 1360h 14B8h 15D0h 1710h 1870h 19B0h
1095h 1200h 1370h 14BBh 15D4h 1720h 1878h 19C0h
1098h 1210h 1380h 14C0h 15D8h 1730h 1880h 19D0h
10A0h 1220h 1390h 14D0h 15E0h 1735h 1890h 19E0h
10C0h 1230h 13A0h 14E0h 15F0h 1740h 1898h 19F0h
10D0h 1240h 13B0h 14F0h 1600h 1750h 18A0h 1A00h
10E0h 1250h 13B8h 1500h 1610h 1770h 18B0h 1A10h
10F0h 1260h 13C0h 1508h 1620h 1780h 18C0h 1A20h
1100h 1270h 13D0h 1510h 1630h 1790h 18D0h 1A30h
1110h 1280h 13E0h 1520h 1640h 17A0h 18E0h 1A40h
1120h 1290h 13F0h 1530h 1650h 17B0h 18F0h 1A50h
1130h 12A0h 1400h 1540h 1660h 17C0h 1900h 1A60h
1140h 12B0h 1410h 1550h 1664h 17D0h 1909h 1A70h
1150h 12C0h 1420h 1560h 1670h 17E0h 1910h 1A80h
----------481A70-----------------------------
INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
AX = 1A70h
BX = call type (see below)
Return: CX = 5649h ('VI') if installed
DX = 4557h ('EW') if installed
AX = version??? (0106h)
Values for call type:
0000h near
0001h far
0002h INT (only valid call type when using INT 48)
0003h near
--------B-49---------------------------------
INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
SeeAlso: INT 48"PCjr"
Format of translation table:
Offset Size Description
00h BYTE number of nonkeyboard scancodes in the table
01h N WORDs high byte 00h (NUL) byte scancode with low order byte
representing the scancode mapped values relative to their
input values within the range of 56h through 7Eh
--------h-49---------------------------------
INT 49 - Z100 - Slave 8259 - S100 vectored line 1
SeeAlso: INT 48"Z100",INT 4A"Z100"
----------49---------------------------------
INT 49 - Texas Instruments PC - VIDEO I/O???
apparently provides direct video display on the TI Professional PC
--------N-49---------------------------------
INT 49 - Watstar PC Network data pointer 2
SeeAlso: INT 49"Watstar"
--------O-49---------------------------------
INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
AL = character to be written
Return: FLAGS destroyed
Note: converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
--------a-490001-----------------------------
INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
AX = 0001h
Return: AX = status (see below)
BX,CX,DX destroyed
Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
Note: INT 49 is the default, but may be overridden on the commandline. The
actual interrupt in use may be found by searching for the signature
"MAGic" or "xMAGic" (for the deluxe version) immediately preceding
the interrupt handler (this is also the installation check). MAGic
uses CodeRunneR, which places the signature "RT" at offset 0000h in
the interrupt handler's segment, followed by MAGic's TSR ID of
"VMAG".
SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
Index: installation check;MAGic
Values for status:
0000h cannot magnify current video mode
0002h magnified (text mode)
0003h magnified (graphics mode)
FFFDh function works only in magnified mode
FFFFh MAGic busy, retry later
--------a-490002-----------------------------
INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
AX = 0002h
Return: AX = status (see AX=0001h)
BX,CX,DX destroyed
SeeAlso: AX=0001h
--------a-490003-----------------------------
INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
AX = 0003h
BX = vertical position (character row [text] or pixel row [graphics])
DX = horizontal position (char column [text] or 8-pixel units [gr])
Return: AX = status
0000h successful
FFFFh MAGic busy, retry later
BX,CX,DX destroyed
Note: window is not moved if the position is inside the current window
SeeAlso: AX=0001h,AX=0004h,AX=0005h
--------a-490004-----------------------------
INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
AX = 0004h
BX = vertical position of upper left corner
DX = horizontal position
Return: AX = status (see AX=0003h)
BX,CX,DX destroyed
SeeAlso: AX=0001h,AX=0003h,AX=0005h
--------a-490005-----------------------------
INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
AX = 0005h
Return: AX = status
0000h successful
BX = vertical position (char row or pixel row)
DX = horizontal position (char column or 8-pixel units)
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
--------a-490006-----------------------------
INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
AX = 0006h
Return: AX = status
0000h successful
BX = vertical size (char rows or pixel rows)
DX = horizontal size (char cols or 8-pixel units)
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
SeeAlso: AX=0001h,AX=0005h,AX=0007h
--------a-490007-----------------------------
INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
AX = 0007h
Return: AX = status
0000h successful
BX = vertical size (char rows or pixel rows)
DX = horizontal size (char cols or 8-pixel units)
FFFEh invalid function
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
BUG: in v1.16 and v1.17, this function is not recognized as valid, but
AX=0000h is accepted and will branch into hyperspace
SeeAlso: AX=0001h,AX=0006h
--------a-490008-----------------------------
INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
AX = 0008h
BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
Return: AX = status
0000h successful
FFFBh scaling factor only available in MAGic Deluxe
FFFCh already in magnified state, can't set size
Notes: this call specifies the amount a subsequent call to AX=0001h should
magnify the display
scaling factors greater than 2 are only available in MAGic Deluxe
SeeAlso: AX=0001h
--------B-4A---------------------------------
INT 4A C - SYSTEM - USER ALARM HANDLER
Desc: This interrupt is invoked by the BIOS when a real-time clock alarm
occurs; an application may use it to perform an action at a
predetermined time.
Note: this interrupt is called from within a hardware interrupt handler,
so all usual precautions against reentering DOS must be taken
SeeAlso: INT 1A/AH=06h
--------h-4A---------------------------------
INT 4A - Z100 - Slave 8259 - S100 vectored line 2
SeeAlso: INT 49"Z100",INT 4B"Z100"
--------O-4A---------------------------------
INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
AL = function code
FAh transfer data between 80186 and 65C12 I/O processor
DS:BX -> control block (see below)
Return: FLAGS destroyed
control block updated
Note: there are more functions than are listed here, but details are not
available
SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
Format of control block for function FAh:
Offset Size Description
00h BYTE number of parameters sent to I/O processor (0Dh,0Eh)
01h BYTE number of parameters read from I/O processor (01h)
02h DWORD I/O processor address
06h DWORD 80186 segment:offset address
0Ah WORD number of bytes to transfer
0Ch BYTE operation type
00h write to 65C12 at 24 us/byte
01h read from 65C12 at 24 us/byte
02h write to 65C12 at 26 us/word
03h read from 65C12 at 26 us/word
04h write to 65C12 at 10 us/byte using 256-byte blocks
05h read from 65C12 at 10 us/byte using 256-byte blocks
0Dh BYTE 65C12 memory access control (only used if offset 00h = 0Eh)
bit 7: unused
bit 6: always use main screen memory if I/O addr 3000h-7FFFh
(overrides bit 5)
bit 5: use shadow screen memory if screen address specified
bit 4: use current ROM rather than ROM selected by bits 3-0
(only if I/O address between 8000h and BFFFh)
bits 3-0: paged ROM number
--------h-4B---------------------------------
INT 4B - Z100 - Slave 8259 - S100 vectored line 3
SeeAlso: INT 4A"Z100",INT 4C"Z100"
--------d-4B---------------------------------
INT 4B - Common Access Method SCSI interface (draft revision 1.9)
ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
Notes: the CAM committee moved the interface to INT 4F after revision 1.9
to avoid conflicting with the IBM SCSI interface and the Virtual
DMA specification
the installation check for the driver is the string "SCSI_CAM" eight
bytes past the INT 4Bh handler
it is not known whether any drivers actually implemented this
interface on INT 4B instead of INT 4F
SeeAlso: INT 4F/AX=8100h
Index: installation check;Common Access Method SCSI interface
--------O-4B---------------------------------
INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
AL = function code
BL = first parameter
BH = second parameter (if needed)
Return: BL = first return parameter
BH = second return parameter
CF depends on function
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
--------d-4B80-------------------------------
INT 4B - IBM SCSI interface
AH = 80h
details not yet available
--------d-4B8102DX0000-----------------------
INT 4B - Virtual DMA Specification (VDS) - GET VERSION
AX = 8102h
DX = 0000h
Return: CF clear if successful
AH = major version number
AL = minor version number
BX = product number (see below)
CX = product revision number
always 0000h for QMAPS and HPMM.SYS
always 0001h for Microsoft's EMM386.EXE v4.20-4.41
SI:DI = maximum DMA buffer size
DX = flags
bit 0: PC/XT bus (DMA in first megabyte only)
bit 1: physical buffer/remap region in first megabyte
bit 2: automatic remap enabled
bit 3: all memory is physically contiguous
bits 4-15 reserved (zero)
CF set on error
AL = error code (see below)
Note: bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
apparently not always the case
SeeAlso: INT 2C/AX=002Bh,INT 31
Index: installation check;Virtual DMA Spec
Values for product number:
0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
0001h for Microsoft's EMM386.EXE
0003h for Windows 3.x WIN386.EXE
0EDCh for DR-DOS 6.0 EMM386.SYS
4560h ("E`") for Qualitas' 386MAX
4D43h ("MC") for V Communication's Memory Commander
5145h ("QE") for Quarterdeck's QEMM-386
524Dh ("RM") for Helix's Netroom RM386
Values for error code:
01h region not in contiguous memory
02h region crossed a physical alignment boundary
03h unable to lock pages
04h no buffer available
05h region too large for buffer
06h buffer currently in use
07h invalid memory region
08h region was not locked
09h number of physical pages greater than table length
0Ah invalid buffer ID
0Bh copy out of buffer range
0Ch invalid DMA channel number
0Dh disable count overflow
0Eh disable count underflow
0Fh function not supported
10h reserved flag bits set in DX
Format of DMA descriptor structure (DDS):
Offset Size Description
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD buffer ID
0Ch DWORD physical address
Format of Extended DMA descriptor structure (EDDS):
Offset Size Description
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD region 0 physical address
14h DWORD region 0 size in bytes
18h DWORD region 1 physical address
1Ch DWORD region 1 size in bytes
...
Format of Extended DMA descriptor structure (EDDS) with page table entries:
Offset Size Description
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD page table entry 0 (same as 80386 page table entry)
14h DWORD page table entry 1
...
Note: bits 1-11 of the page table entries should be zero; bit 0 set if page
is present and locked
--------d-4B8103-----------------------------
INT 4B - Virtual DMA Specification - LOCK DMA REGION
AX = 8103h
DX = flags (see below)
ES:DI -> DMA descriptor structure (see AX=8102h)
Return: CF clear if successful
DDS physical address field filled in
DDS buffer ID field filled (0000h if no buffer allocated)
CF set on error
AL = error code (see AX=8102h)
DDS region size field filled wth maximum contiguous length in bytes
BUGS: Windows 3.0 does not correctly support automatic remapping or copying
in enhanced mode
Windows 3.0 in enhanced mode does not return a correct code on error
SeeAlso: AX=8104h,AX=8105h
Bitfields for flags:
bit 0 reserved (zero)
bit 1 data should be copied into buffer (ignored if bit 2 set)
bit 2 buffer should not be allocated if region noncontiguous or crosses
physical alignment boundary specified by bits 4-5
bit 3 don't attempt automatic remap
bit 4 region must not cross 64K physical alignment boundary
bit 5 region must not cross 128K physical alignment boundary
bits 6-15 reserved (zero)
--------d-4B8104-----------------------------
INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
AX = 8104h
DX = flags
bit 0: reserved (zero)
bit 1: data should be copied out of buffer
bits 2-15 reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
physical address, and buffer ID fields set
Return: CF clear if successful
DDS physical address field set
DDS buffer ID field set (0000h if no buffer allocated)
CF set on error
AL = error code (see AX=8102h)
DDS region size field filled wth maximum contiguous length in bytes
Note: Windows 3.0 does not check whether the region extends beyond the end of
a segment
BUG: Windows 3.0 in enhanced mode does not return a correct code on error
SeeAlso: AX=8103h,AX=8106h
--------d-4B8105-----------------------------
INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
AX = 8105h
DX = flags
bits 0-5 reserved (zero)
bit 6: EDDS should be returned with page table entries
bit 7: only present pages should be locked (not-present pages
receive entry of 0000h)
bits 8-15 reserved (zero)
ES:DI -> Extended DMA descriptor structure (see AX=8102h)
region size, linear segment, linear offset, and number avail
fields set
Return: CF clear if successful
EDDS number used field set
if DX bit 6 set, lower 12 bits of BX = offset in first page
CF set on error
AL = error code (see AX=8102h)
EDDS region size field filled with max length in bytes that can be
locked and described in the EDDS table
BUG: Windows 3.0 in enhanced mode may return zero instead of the physical
page address for pages which were originally not present
SeeAlso: AX=8103h,AX=8106h
--------d-4B8106-----------------------------
INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
AX = 8106h
DX = flags
bits 0-5 reserved (zero)
bit 6: EDDS contains page table entries
bit 7: EDDS may contain not-present pages (entry = 0000h)
bits 8-15 reserved (zero)
ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
by AX=8105h
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
Note: according to the Microsoft version of the VDS specification, the
actual scatter/gather list is ignored, while according to the IBM
version of the specification, "the result of a LOCK operation"
must be provided to this function
SeeAlso: AX=8104h,AX=8105h
--------d-4B8107-----------------------------
INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
AX = 8107h
DX = flags
bit 0: reserved (zero)
bit 1: data should be copied into buffer
bits 2-15 reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
(also region offset and region segment if DX bit 1 set)
Return: CF clear if successful
DDS physical address and buffer ID set
DDS region size filled with length of buffer
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=8108h
--------d-4B8108-----------------------------
INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
AX = 8108h
DX = flags
bit 0: reserved (zero)
bit 1: data should be copied out of buffer
bits 2-15 reserved (zero)
ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
(also region size/region offset/segment if DX bit 1 set)
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
BUG: under Windows 3.0 Enhanced mode, you must specify that data be copied
for this function to work correctly
SeeAlso: AX=8107h
--------d-4B8109DX0000-----------------------
INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
AX = 8109h
DX = 0000h
ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
region segment/offset, and region size fields set
BX:CX = starting offset into DMA buffer
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
SeeAlso: AX=810Ah
--------d-4B810ADX0000-----------------------
INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
AX = 810Ah
DX = 0000h
ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
region segment/offset, and region size fields set
BX:CX = starting offset into DMA buffer
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
SeeAlso: AX=8109h
--------d-4B810B-----------------------------
INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
AX = 810Bh
BX = DMA channel number
DX = 0000h
Return: CF clear if successful
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=810Ch
--------d-4B810C-----------------------------
INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
AX = 810Ch
BX = DMA channel number
DX = 0000h
Return: CF clear if successful
ZF set if disable count decremented to zero
CF set on error
AL = error code (see AX=8102h)
SeeAlso: AX=810Bh
--------Q-4B810D-----------------------------
INT 4B - QEMM-386 - BUG
AX = 810Dh
Note: the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
call
--------h-4C---------------------------------
INT 4C - Z100 - Slave 8259 - S100 vectored line 4
SeeAlso: INT 4B"Z100",INT 4D"Z100"
--------O-4C---------------------------------
INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
DS:BX -> CR-terminated command string
Return: FLAGS destroyed
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
--------h-4D---------------------------------
INT 4D - Z100 - Slave 8259 - S100 vectored line 5
SeeAlso: INT 4C"Z100",INT 4E"Z100"
--------d-4E---------------------------------
INT 4E - TI Professional PC - DISK I/O
used instead of INT 13 on the TI Professional PC
SeeAlso: INT 13
--------h-4E---------------------------------
INT 4E - Z100 - Slave 8259 - S100 vectored line 6
SeeAlso: INT 4D"Z100",INT 4F"Z100"
--------h-4F---------------------------------
INT 4F - Z100 - Slave 8259 - S100 vectored line 7
SeeAlso: INT 4E"Z100"
--------d-4F8100-----------------------------
INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
AX = 8100h
ES:BX -> CAM Control Block (CCB) (see below)
Return: AH = status
00h successful
01h invalid CCB address (0000h:0000h)
Note: the SCSI Interface Module (SIM) may complete the requested function
and invoke the completion callback function before this call returns
SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
Values for CAM function code:
00h NOP
01h execute SCSI I/O
02h get device type
03h path inquiry
04h release SIM queue
05h set async callback
06h set device type
07h-0Fh reserved
10h abort SCSI command
11h reset SCSI bus
12h reset SCSI device
13h terminate I/O process
14h-1Fh reserved
20h engine inquiry
21h execute engine request
22h-2Fh reserved
30h enable logical unit number
31h execute target I/O
32h-7Fh reserved
80h-FFh vendor-specific functions
Format of CAM Control Block:
Offset Size Description
00h DWORD physical address of this CCB
04h WORD CAM control block length
06h BYTE function code (see above)
07h BYTE CAM status (see below)
08h BYTE SCSI status
09h BYTE path ID (FFh = XPT)
0Ah BYTE target ID
0Bh BYTE logical unit number
0Ch WORD CAM flags (see below)
0Eh BYTE CAM address flags (see below)
0Fh BYTE target-mode flags (see below)
---function 02h---
10h DWORD pointer to 36-byte buffer for inquiry data or 0000h:0000h
14h BYTE peripheral device type of target logical unit number
---function 03h---
10h BYTE version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
09h-FFh = rev no, i.e. 23h = rev 2.3)
11h BYTE SCSI capabilities (see below)
12h BYTE target mode support
bit 7: processor mode
bit 6: phase-cognizant mode
bit 5-0: reserved
13h BYTE miscellaneous flags
bit 7: scanned high to low instead of low to high
bit 6: removables not included in scan
bit 5: inquiry data not kept by XPT
bits 4-0: reserved
14h WORD engine count
16h 14 BYTEs vendor-specific data
24h DWORD size of private data area
28h DWORD asynchronous event capabilities (see below)
2Ch BYTE highest path ID assigned
2Dh BYTE SCSI device ID of initiator
2Eh 2 BYTEs reserved
30h 16 BYTEs SIM vendor ID
40h 16 BYTEs HBA (host bus adaptor) vendor ID
50h 4 BYTEs operating-system dependant usage
---functions 00h,04h,11h,12h---
no additional fields
---function 05h---
10h DWORD asynchronous event enables (see function 03h above)
14h DWORD pointer to asynchronous callback routine
18h DWORD pointer to peripheral driver buffer
1Ch BYTE size of peripheral buffer
---function 06h---
10h BYTE peripheral device type of target
---functions 10h,13h---
10h DWORD pointer to CCB to be aborted
---function 20h---
10h WORD engine number
12h BYTE engine type
00h buffer memory
01h lossless compression
02h lossy compression
03h encryption
13h BYTE engine algorithm ID
00h vendor-unique
01h LZ1 variation 1 (STAC)
02h LZ2 variation 1 (HP DCZL)
03h LZ2 variation 2 (Infochip)
14h DWORD engine memory size
---function 21h---
10h DWORD pointer to peripheral driver
14h 4 BYTEs reserved
18h DWORD OS-dependent request-mapping info
1Ch DWORD address of completion callback routine
20h DWORD pointer to scatter/gather list or data buffer
24h DWORD length of data transfer
28h DWORD pointer to engine buffer data
2Ch 2 BYTEs reserved
2Eh WORD number of scatter/gather entries
30h DWORD maximum destination data length
34h DWORD length of destination data
38h DWORD source residual length
3Ch 12 BYTEs reserved
48h DWORD OS-dependent timeout value
4Ch 4 BYTEs reserved
50h WORD engine number
52h WORD vendor-unique flags
54h 4 BYTEs reserved
58h N BYTEs private data area for SIM
---function 30h---
10h WORD group 6 vendor-unique CDB length
12h WORD group 7 vendor-unique CDB length
14h DWORD pointer to target CCB list
18h WORD number of target CCBs
---other functions---
10h DWORD pointer to peripheral driver
14h DWORD pointer to next CCB
18h DWORD OS-dependent request mapping information
1Ch DWORD address of completion callback routine
20h DWORD pointer to scatter/gather list or data buffer
24h DWORD length of data transfer
28h DWORD pointer to sense info buffer
2Ch BYTE length of sense info buffer
2Dh BYTE CDB length
2Eh WORD number of scatter/gather entries
30h 4 BYTEs reserved
34h BYTE SCSI status
35h 3 BYTEs reserved
38h DWORD residual length
40h 12 BYTEs Command Descriptor Block (CDB)
44h DWORD OS-dependent timeout value
48h DWORD pointer to message buffer
4Ch WORD length of message buffer
4Eh WORD vendor-unique flags
50h BYTE tag queue action
51h 3 BYTEs reserved
54h N BYTEs private data area for SIM
Bitfields for CAM flags:
bit 0 CDB is a pointer
bit 1 tagged queue action enable
bit 2 linked CDB
bit 3 disable callback on completion
bit 4 scatter/gather
bit 5 disable autosense
bits 7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
bits 9-8 reserved
bit 10 engine synchronize
bit 11 SIM queue freeze
bit 12 SIM queue priority
1 head insertion
0 tail insertion (normal)
bit 13 disable synchronous transfers / exclusive
bit 14 initiate synchronous transfers \ mutually
bit 15 disable disconnect
Bitfields for CAM address flags:
bit 7 SG list/data (0 = host, 1 = engine)
bit 6 CDB pointer (bits 6-1: 0=virtual addr, 1=phys addr)
bit 5 SG list/data
bit 4 sense buffer
bit 3 message buffer
bit 2 next CCB
bit 1 callback on completion
bit 0 reserved
Values for CAM status:
00h request in progress
01h request successful
02h host aborted request
03h unable to abort request
04h request completed with error
05h CAM is busy
06h invalid request
07h invalid path ID
08h no such SCSI device
09h unable to terminate I/O process
0Ah timeout on target selection
0Bh timeout on command
0Dh receive message rejection
0Eh sent/received SCSI bus reset
0Fh detected uncorrectable parity error
10h Autosense request failed
11h no HBA detected
12h data over/underrun
13h bus freed unexpectedly
14h target bus phase sequence failure
15h CCB too small
16h requested capability not available
17h sent bus device reset
18h terminate I/O process
38h invalid LUN
39h invalid target ID
3Ah unimplemented function
3Bh nexus not established
3Ch invalid initiator ID
3Dh received SCSI Command Descriptor Block
3Eh LUN already enabled
3Fh SCSI bus busy
Note: bit 6 set to indicate frozen SIM queue
bit 7 set to indicate valid autosense
Bitfields for target-mode flags:
bit 7 data buffer valid
bit 6 status valid
bit 5 message buffer valid
bit 4 reserved
bit 3 phase-cognizant mode
bit 2 target CCB available
bit 1 disable autodisconnect
bit 0 disable autosave/restore
Bitfields for SCSI capabilities:
bit 7 modify data pointers
bit 6 wide bus (32 bits)
bit 5 wide bus (16 bits)
bit 4 synchronous transfers
bit 3 linked commands
bit 2 reserved
bit 1 tagged queueing
bit 0 soft reset
Bitfields for asynchronous event capabilities:
bits 31-24 vendor-specific
bits 23-8 reserved
bit 7 new devices found during rescan
bit 6 SIM module deregistered
bit 5 SIM module registered
bit 4 sent bus device reset to target
bit 3 SCSI AEN
bit 2 reserved
bit 1 unsolicited reselection
bit 0 unsolicited SCSI bus reset
Completion callback function called with:
interrupts disabled
ES:BX -> completed CCB
Asynchronous callback function called with:
AH = opcode
AL = path ID generating callback
DH = target ID causing event
DL = LUN causing event
CX = data byte count (if applicable)
ES:BX -> data buffer (if applicable)
Return: all registers preserved
--------d-4F8200CX8765-----------------------
INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
AX = 8200h
CX = 8765h
DX = CBA9h
Return: AH = 00h if installed
CX = 9ABCh
DX = 5678h
ES:DI -> "SCSI_CAM"
SeeAlso: AX=8100h,INT 4B"Common Access Method"
--------N-50---------------------------------
INT 50 - TIL Xpert AIM (X.25)
AH = function
--------H-50---------------------------------
INT 50 - IRQ0 relocated by DESQview
Notes: this is the default location for older versions; DESQview v2.26+
searches for unused ranges of interrupts and uses the lowest
available range in its list for relocating these IRQs and the next
lowest for relocating IRQ8-IRQ15
a range of eight interrupts starting at a multiple of 8 is considered
available if all vectors are identical and it has not been excluded
with an /XB:nn commandline switch
the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
are available, F8h and then 50h are used anyway)
the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
are available, F8h and then F0h are used anyway)
SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
SeeAlso: INT D8"Screen Thief"
--------H-50---------------------------------
INT 50 - IRQ0 relocated by IBM 3278 emulation control program
SeeAlso: INT 51"IBM 3278"
--------H-50---------------------------------
INT 50 - IRQ0 relocated by OS/2 v1.x
SeeAlso: INT 51"OS/2"
--------V-500000-----------------------------
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
AX = 0000h
ES:BX -> name string or ES:0000h if none
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
Return: AX = window handle or
0000h if not installed
FFFFh on error
SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
--------V-500001-----------------------------
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
AX = 0001h
DI = window handle
SeeAlso: AX=0000h
--------V-500002-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
AX = 0002h
BL = character
BH = attribute
DL = column
DH = row
DI = window handle
Return: AX = status
0000h if successful
FFFFh if outside window
SeeAlso: AX=0000h
--------l-500002-----------------------------
INT 50 - PC Thuis Organizer Shell - PLOT TEXT
AX = 0002h
ES:BX -> text string
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = status
0000h successful (text fits in window)
FFFFh error
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
--------V-500003-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
AX = 0003h
ES:BX -> text string
CX = string length (0000h if ASCIZ string)
DL = position (FFh centered, else flush left)
DH = starting row
DI = window handle
Return: AX = status
0000h successful
FFFFh did not fit in window
--------l-500003-----------------------------
INT 50 - PC Thuis Organizer Shell - WRITE FILE
AX = 0003h
ES:BX -> data to be written
CX = number of bytes to write
DS:SI -> filename
Return: AX = status
0000h successful
FFFFh error
SeeAlso: AX=0004h"Shell"
--------V-500004-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - GET KEY
AX = 0004h
CH = type
00h any key
01h 'J' or 'N' (Dutch for yes/no)
Return: AX = key
SeeAlso: INT 16/AH=00h
--------l-500004-----------------------------
INT 50 - PC Thuis Organizer Shell - READ FILE
AX = 0004h
ES:BX -> buffer for data
CX = number of bytes to read or 0000h for entire file
DL = file type
01h setting shell
02h setting sterm
03h INT21 file
DS:SI -> filename
Return: AX = status
0000h successful
FFFFh error
Note: file type numbers are maintained by John Vanderaart; if a new file type
is needed, a type number should be requested from him through the
magazine:
PC Thuis BV
Spaarne 55
2011 CE HAARLEM
The Netherlands
SeeAlso: AX=0003h"Shell"
--------V-500005-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
AX = 0005h
BL = new attribute
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
DI = window handle
--------l-500005-----------------------------
INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
AX = 0005h
ES:BX -> prompt string (ES:0000h if no prompt)
Return: AX = key pressed
0000h "J" (Dutch "Ja" = "Yes")
FFFFh "N" (Dutch "Nee" = "No")
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: AX=0008h"PC Thuis"
--------V-500006-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
AX = 0006h
ES:BX -> text string
CH = type of input (see below)
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = key which terminated entry
0000h Enter
0001h Esc
0002h Down arrow
0003h Up arrow
0004h F10
Values for type of input:
00h everything
01h uppercase only
02h positive numbers
03h Dutch postal code ("9999 AA")
04h 'J' or 'N' (Dutch yes/no)
05h telephone or FAX number
06h positive or negative number
07h date (dd/mm/yy)
08h money
09h '1' through '8'
0Ah '1' through '4'
0Bh uppercase filenames
--------l-500006-----------------------------
INT 50 - PC Thuis Organizer Shell - ALERT USER
AX = 0006h
ES:BX -> string
--------l-500007-----------------------------
INT 50 - PC Thuis Organizer Shell - DO LINE
AX = 0007h
ES:BX -> text string
CX = string length in bytes (0000h if NUL-terminated)
DL = FFh to center string, else flush left
DH = upper left row
DI = window handle
Return: AX = status
0000h successful
FFFFh error
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: AX=0008h
--------l-500008-----------------------------
INT 50 - PC Thuis Organizer Shell - DO MENU
AX = 0008h
ES:BX -> menu structure
Return: AL = index 1 or FFh if not selected
AH = index 2 or FFh if not selected
BL = index 3 or FFh if not selected
BH = index 4 or FFh if not selected
SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
--------l-500009-----------------------------
INT 50 - PC Thuis Organizer Shell - MESSAGE ON
AX = 0009h
ES:BX -> message string
SeeAlso: AX=000Ah
--------l-50000A-----------------------------
INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
AX = 000Ah
SeeAlso: AX=0009h
--------l-50000B-----------------------------
INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
AX = 000Bh
BL = new attribute
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
DI = window handle
--------l-50000C-----------------------------
INT 50 - PC Thuis Organizer Shell - DO REQUEST
AX = 000Ch
ES:BX -> request structure
Return: AX = status
0000h confirmed
FFFFh denied
SeeAlso: AX=0008h
--------l-50000D-----------------------------
INT 50 - PC Thuis Organizer Shell - EDIT LINE
AX = 000Dh
ES:BX -> text string
CL = length
CH = type
bit 0: force uppercase
bit 1: integer
bit 2: no spaces allowed
bit 3: no cursor keys
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = result code
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
--------l-50000E-----------------------------
INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
AX = 000Eh
BL = character
BH = attribute
DH,DL = row,column at which to plot
DI = window handle
Return: AX = status
0000h successful
FFFFh errror
--------l-50000F-----------------------------
INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
AX = 000Fh
BL = character
BH = attribute
DI = window handle
--------l-500010-----------------------------
INT 50 - PC Thuis Organizer Shell - TRACE MENU
AX = 0010h
ES:BX -> first menu structure
CL = hotkey to look up
Return: AL = index 1 or FFh if not selected
AH = index 2 or FFh if not selected
BL = index 3 or FFh if not selected
BH = index 4 or FFh if not selected
Index: hotkeys;PC Thuis Organizer Shell
--------l-500011-----------------------------
INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
AX = 0011h
DS:SI -> source
ES:DI -> destination
CX = number of bytes to move (0000h = until NUL string terminator???)
SeeAlso: AX=0012h
--------l-500012-----------------------------
INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
AX = 0012h
DS:SI -> source
ES:DI -> destination
CX = number of bytes to compare (0000h=until NUL string terminator???)
Return: AX = status
0000h same
FFFFh different
SeeAlso: AX=0011h
--------l-500013-----------------------------
INT 50 - PC Thuis Organizer Shell - GET KEY
AX = 0013h
CH = type flags
bit 0: force uppercase
bit 1: integer
bit 2: no spaces
Return: AX = keystroke
--------l-500014-----------------------------
INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
AX = 0014h
BL = direction
06h up
07h down
BH = attribute
DI = window handle
SeeAlso: INT 10/AH=06h,INT 10/AH=07h
--------l-500015-----------------------------
INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
AX = 0015h
BL = handle size
00h 65536 bytes (64K)
01h 65535 bytes (64K-1)
02h 32768 bytes (32K)
03h 32767 bytes (32K-1)
Return: AX = segment
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: INT 21/AH=48h
--------H-51---------------------------------
INT 51 - IRQ1 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
--------H-51---------------------------------
INT 51 - IRQ1 relocated by IBM 3278 emulation control program
SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
--------H-51---------------------------------
INT 51 - IRQ1 relocated by OS/2 v1.x
SeeAlso: INT 50"OS/2",INT 54"OS/2"
--------H-52---------------------------------
INT 52 - IRQ2 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
--------H-52---------------------------------
INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
--------H-53---------------------------------
INT 53 - IRQ3 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
--------H-53---------------------------------
INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
--------N-53---------------------------------
INT 53 - WEB??? - API
BX = function
0000h ???
AX = ???
Return: AX = ???
0004h ???
0009h ???
0015h
AX = ???
DX = ???
0017h
Return: ???
Notes: the installation check consists of looking for the signature "WEBCO"
immediately prior to the interrupt handler
the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
Index: installation check;unknown|installation check;WEBCO
--------H-54---------------------------------
INT 54 - IRQ4 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-54---------------------------------
INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------H-55---------------------------------
INT 55 - IRQ5 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-55---------------------------------
INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------H-56---------------------------------
INT 56 - IRQ6 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-56---------------------------------
INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------H-57---------------------------------
INT 57 - IRQ7 relocated by DESQview
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-57---------------------------------
INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------H-58---------------------------------
INT 58 - IRQ8 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 70
--------H-58---------------------------------
INT 58 - IRQ0 relocated by DoubleDOS
SeeAlso: INT 08
--------H-59---------------------------------
INT 59 - IRQ9 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 71
--------H-59---------------------------------
INT 59 - IRQ1 relocated by DoubleDOS
SeeAlso: INT 09
--------V-59---------------------------------
INT 59 - GSS Computer Graphics Interface (GSS*CGI)
DS:DX -> block of 5 array pointers
Return: CF set on error
AX = error code
CF clear if successful
AX = return code
Note: INT 59 is the means by which GSS*CGI language bindings communicate with
GSS*CGI device drivers and the GSS*CGI device driver controller.
also used by the IBM Graphic Development Toolkit
--------H-5A---------------------------------
INT 5A - IRQ10 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 72
--------H-5A---------------------------------
INT 5A - IRQ2 relocated by DoubleDOS
SeeAlso: INT 0A
--------N-5A---------------------------------
INT 5A - Cluster adapter BIOS entry address
???
--------H-5B---------------------------------
INT 5B - IRQ11 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 73
--------H-5B---------------------------------
INT 5B - IRQ3 relocated by DoubleDOS
SeeAlso: INT 0B
--------N-5B---------------------------------
INT 5B - Used by cluster adapter
--------N-5B---------------------------------
INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
ES:BX -> Network Control Block (see below)
Return: AL = status (see INT 5C)
SeeAlso: INT 5C
Format of Network Control Block
Offset Size Description
00h BYTE ncb_command (see below)
01h BYTE ncb_retcode
02h BYTE ncb_lsn
03h BYTE ncb_num
04h DWORD -> ncb_buffer
08h WORD ncb_length
0Ah 16 BYTEs ncb_callname
1Ah 16 BYTEs ncb_name
2Ah BYTE ncb_rto
2Bh BYTE ncb_sto
2Ch DWORD -> ncb_post /* int (far *ncb_post)(); */
30h BYTE ncb_lana_num
31h BYTE ncb_cmd_cplt
32h DWORD -> ncb_vname
36h BYTE ncb_vnamelen
37h 9 BYTEs ncb_reserve
Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
Values for ncb_command field same as for INT 5C, except
70h send net Break
--------N-5B---------------------------------
INT 5B - Microsoft Network Transport Layer Interface
Note: used by MS-NET for executing network commands
SeeAlso: INT 5C"NetBIOS"
--------N-5B---------------------------------
INT 5B - used by Alloy NTNX
--------N-5B---------------------------------
INT 5B - ISOLAN Multi Protocol Software
ES:BX -> Transfer Control Block
Return: AL - status
Note: this software interface allows multiple protocols/software packages
to access a BICC 411x network card
Format of Transfer Control Block:
Offset Type Description
00h BYTE command code
B3h Status
F2h Activate
F3h Deactivate
F4h Send Data
01h BYTE command identity
02h BYTE virtual circuit ID
03h WORD buffer length
05h DWORD buffer pointer
09h BYTE expedited data flag
0Ah BYTE cancelable flag
0Bh 16 BYTEs local network address
1Bh 16 BYTEs remote network address
2Bh DWORD asynchronous notification routine
30h DWORD local network number
34h DWORD remote network number
38h BYTE call timeout
39h BYTE not used
3Ah 8 BYTEs reserved
42h BYTE command code extension
43h WORD Blue Book MAC type
----------5B5254DL04-------------------------
INT 5B U - SitBack v3.02R - GET ???
AX = 5254h
DL = 04h
Return: ES:BX -> ??? in resident portion
Program: SitBack is a background file backup utility by SitBack Technologies,
Inc. which initiates backups whenever the system is idle
SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
----------5B8485DL70-------------------------
INT 5B U - SitBack v3.02R - INSTALLATION CHECK
AX = 8485h
DL = 70h
Return: CX = 8485h if installed
DX:AX -> ??? (configuration data?)
Program: SitBack is a background file backup utility by SitBack Technologies,
Inc. which initiates backups whenever the system is idle
SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
----------5B8485DL71-------------------------
INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
AX = 8485h
DL = 71h
Return: ES:BX -> FAR entry point to ???
Note: the flag which is modified is located at the address returned by
AX=5254h/DL=04h
SeeAlso: AX=8485h/DL=72h
----------5B8485DL72-------------------------
INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
AX = 8485h
DL = 72h
Note: the flag which is modified is located at the address returned by
AX=5254h/DL=04h
SeeAlso: AX=8485h/DL=71h
----------5B8485DL73-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 73h
???
Return: ???
----------5B8485DL74-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 74h
???
Return: ???
----------5B8485DL75-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 75h
CX = ???
Return: ???
SeeAlso: AX=8485h/DL=76h
----------5B8485DL76-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 76h
CX = ???
Return: ???
Note: conditionally calls the code for AX=8485h/DL=75h
SeeAlso: AX=8485h/DL=75h
----------5B8485DL77-------------------------
INT 5B U - SitBack v3.02R - SET ??? FLAG
AX = 8485h
DL = 77h
----------5B8485DL78-------------------------
INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
AX = 8485h
DL = 78h
Return: CX = 5342h if supported
ES = AX = segment of TSR data
SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
----------5B8485DL79-------------------------
INT 5B U - SitBack v3.02R - GET DTA
AX = 8485h
DL = 79h
Return: CX = 5342h if supported
ES:BX -> DTA set by last INT 21/AH=1Ah
Note: this function is provided by SBOS.EXE rather than SB.EXE
SeeAlso: INT 21/AH=1Ah
----------5B8485DL7A-------------------------
INT 5B U - SitBack v3.02R - TOGGLE ???
AX = 8485h
DL = 7Ah
Return: CX = 5342h if supported
AL = new value of ??? (00h or 01h)
--------H-5C---------------------------------
INT 5C - IRQ12 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 74
--------H-5C---------------------------------
INT 5C - IRQ4 relocated by DoubleDOS
SeeAlso: INT 0C
--------N-5C---------------------------------
INT 5C - NetBIOS INTERFACE
ES:BX -> network control block (NCB) (see below)
Return: AL = status (see below)
Note: Sytek PCnet card uses DMA 3.
SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
Values for NetBIOS status:
00h successful
01h bad buffer size
03h invalid NETBIOS command
05h timeout
06h receive buffer too small
07h No-ACK command failed
08h bad session number
09h LAN card out of memory
0Ah session closed
0Bh command has been cancelled
0Dh name already exists
0Eh local name table full
0Fh name still in use, can't delete
11h local session table full
12h remote PC not listening
13h bad NCB_NUM field
14h no answer to CALL or no such remote
15h name not in local name table
16h duplicate name
17h bad delete
18h abnormal end
19h name error, multiple identical names in use
1Ah bad packet
21h network card busy
22h too many commands queued
23h bad LAN card number
24h command finished while cancelling
26h command can't be cancelled
30h name defined by another process (OS/2)
34h NetBIOS environment not defined, must issue reset (OS/2)
35h required operating system resources exhausted (OS/2)
36h maximum applications exceeded (OS/2)
37h no SAPs available for NetBIOS (OS/2)
38h requested resources not available (OS/2)
40h Lana System Error
41h Lana Remote Hot Carrier
42h Lana Local Hot Carrier
43h Lana No Carrier Detected
44h unusual network condition
45h-4Dh hardware error
4Eh token ring is broken
4Fh token ring error
50h adapter malfunction
F7h error in explicit INITIALIZE
F8h error in implicit OPEN
F9h TOKREUI internal error
FAh hardware adapter testing
FBh NetBIOS emulator not found
FCh OPEN or OPEN_SAP failure
FDh unexpected adapter closure
FFh NetBIOS busy (command pending)
Format of Network Control Block:
Offset Size Description
00h BYTE command code (see below)
01h BYTE return code
02h BYTE local session number (LSN)
03h BYTE "ncb_num" datagram table entry from ADD NAME
04h DWORD -> I/O buffer
08h WORD length of data in buffer
0Ah 16 BYTEs remote system to call
1Ah 16 BYTEs network name of local machine
2Ah BYTE receive timeout in 1/2 seconds
2Bh BYTE send timeout in 1/2 seconds
2Ch DWORD -> FAR post handler /* int (far *ncb_post)(); */
30h BYTE network adapter number on which to execute command
00h-03h IBM NetBIOS specs
F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
31h BYTE command completion code (see returned status above)
32h 14 BYTEs reserved for network card
Values for command code field in NCB (OR with 80h for non-waiting call):
10h start session with NCB_NAME name (call)
11h listen for call
12h end session with NCB_NAME name (hangup)
14h send data via NCB_LSN
15h receive data from a session
16h receive data from any session
17h send multiple data buffers
20h send unACKed message (datagram)
21h receive datagram
22h send broadcast datagram
23h receive broadcast datagram
30h add name to name table
31h delete name from name table
32h reset adapter card and tables
33h get adapter status (see structure "astatus" below)
34h status of all sessions for name (see structure "sstatus" below)
35h cancel
36h add group name to name table
48h send data and receive data (LAN Manager NETBEUI.DOS)
70h unlink from IBM remote program (no F0h function)
71h send data without ACK
72h send multiple buffers without ACK
72h UngermannBass Register (conflicts with above function)
73h UngermannBass SendNmc
74h UngermannBass Callniu
75h UngermannBass Calladdr
76h UngermannBass Listenaddr
77h UngermannBass SendPkt
78h find name
78h UngermannBass RcvPkt (conflicts with above function)
79h token-ring protocol trace
79h UngermannBass SendAttn (conflicts with above function)
7Ah UngermannBass RcvAttn
7Bh UngermannBass Listenniu
7Ch UngermannBass RcvRaw
7Dh UngermannBass SendNmc2
7Fh Beame&Whiteside BWNB installation check (returns with return code and
completion code both set to 03h, while invalid functions return only
return code field set to 03h)
Format of structure "name":
Offset Size Description
00h 16 BYTEs "nm_name" symbolic name
10h BYTE "nm_num" number associated with name
11h BYTE nm_status
Format of structure "astatus":
Offset Size Description
00h 6 BYTEs as_id
06h BYTE as_jumpers
07h BYTE as_post
08h BYTE as_major
09h BYTE as_minor
0Ah WORD as_interval
0Ch WORD as_crcerr
0Eh WORD as_algerr
10h WORD as_colerr
12h WORD as_abterr
14h DWORD as_tcount
18h DWORD as_rcount
1Ch WORD as_retran
1Eh WORD as_xresrc
20h 8 BYTEs as_res0
28h WORD as_ncbfree
2Ah WORD as_ncbmax
2Ch WORD as_ncbx
2Eh 4 BYTEs as_res1
32h WORD as_sespend
34h WORD as_msp
36h WORD as_sesmax
38h WORD as_bufsize
3Ah WORD as_names
3Ch 16 name structures as_name
Format of structure "sstatus":
Offset Size Description
00h BYTE number of sessions being reported
01h BYTE number of sessions with this name
02h BYTE number of outstanding receive datagrams
03h BYTE number of outstanding ReceiveAnys
04h var session structures (see below)
Format of structure "session":
Offset Size Description
00h BYTE local session number
01h BYTE state
01h listen pending
02h call pending
03h session established
04h hangup pending
05h hangup done
06h session aborted
02h 16 BYTEs local name
12h 16 BYTEs remote name
22h BYTE number of outstanding receives
23h BYTE number of outstanding sends/chainsends
--------N-5C---------------------------------
INT 5C - TOPS INTERFACE
ES:BX -> Network Control Block
Note: TOPS card uses DMA 1, 3 or none.
--------N-5C---------------------------------
INT 5C - ATALK.SYS - AppleTalk INTERFACE
DX:BX -> control block (see below)
Return: none
Notes: this driver can use any interrupt from 5Ch to 70h
the signature 'AppleTalk' appears 16 bytes prior to the interrupt
handler; this serves as the installation check
Index: installation check;ATALK.SYS|installation check;AppleTalk interface
Values for command code:
01h "AT_INIT" initialize the driver
02h "AT_KILL"
03h "AT_GETNETINFO" get current network info incl init status
04h "AT_GETCLOCKTICKS"
05h "AT_STARTTIMER"
06h "AT_RESETTIMER"
07h "AT_CANCELTIMER"
10h "LAP_INSTALL"
11h "LAP_REMOVE"
12h "LAP_WRITE"
13h "LAP_READ"
14h "LAP_CANCEL"
20h "DDP_OPENSOCKET"
21h "DDP_CLOSESOCKET"
22h "DDP_WRITE"
23h "DDP_READ"
24h "DDP_CANCEL"
30h "NBP_REGISTER"
31h "NBP_REMOVE"
32h "NBP_LOOKUP"
33h "NBP_CONFIRM"
34h "NBP_CANCEL"
35h "ZIP_GETZONELIST"
36h "ZIP_GETMYZONE"
37h "ZIP_TAKEDOWN"
38h "ZIP_BRINGUP"
40h "ATP_OPENSOCKET"
41h "ATP_CLOSESOCKET"
42h "ATP_SENDREQUEST"
43h "ATP_GETREQUEST"
44h "ATP_SENDRESPONSE"
45h "ATP_ADDRESPONSE"
46h "ATP_CANCELTRANS"
47h "ATP_CANCELRESPONSE"
48h "ATP_CANCELREQUEST"
50h "ASP_GETPARMS"
51h "ASP_CLOSESESSION"
52h "ASP_CANCEL"
53h "ASP_INIT"
54h "ASP_KILL"
55h "ASP_GETSESSION"
56h "ASP_GETREQUEST"
57h "ASP_CMDREPLY"
58h "ASP_WRTCONTINUE"
59h "ASP_WRTREPLY"
5Ah "ASP_CLOSEREPLY"
5Bh "ASP_NEWSTATUS"
5Ch "ASP_ATTENTION"
5Dh "ASP_GETSTATUS"
5Eh "ASP_OPENSESSION"
5Fh "ASP_COMMAND"
60h "ASP_WRITE"
61h "ASP_GETATTENTION"
70h "PAP_OPEN"
71h "PAP_CLOSE"
72h "PAP_READ"
73h "PAP_WRITE"
74h "PAP_STATUS"
75h "PAP_REGNAME"
76h "PAP_REMNAME"
77h "PAP_INIT"
78h "PAP_NEWSTATUS"
79h "PAP_GETNEXTJOB"
7Ah "PAP_KILL"
7Bh "PAP_CANCEL"
Format of AppleTalk control block:
Offset Size Description
00h WORD command code (see above)
OR with the following flags
8000h start command then return
4000h wait for interrupt service to complete
02h WORD returned status
0000h success (already initialized if func 01h)
04h DWORD pointer to completion function
08h WORD network number
0Ah BYTE node ID
---if general func (01h,03h), control block continues:
0Bh BYTE "inf_abridge"
0Ch WORD "inf_config"
0Eh DWORD pointer to buffer
12h WORD buffer size
---if DDP function (20h-24h), control block continues:
0Bh BYTE "ddp_addr_socket"
0Ch BYTE "ddp_socket"
0Dh BYTE "ddp_type"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "ddp_chksum"
---if Name Binding Protocol (30h-34h), control block continues:
0Bh BYTE "nbp_addr_socket"
0Ch WORD "nbp_toget"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "nbp_interval"
15h BYTE "nbp_retry"
16h DWORD "nbp_entptr"
---if AppleTalk Transaction Protocol (42h), control block continues:
0Bh BYTE "atp_addr_socket"
0Ch WORD "atp_socket"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "atp_interval"
15h BYTE "atp_retry"
16h BYTE ATP flags
bit 5: exactly one transaction
17h BYTE "atp_seqbit"
18h BYTE transaction ID
19h 4 BYTEs ATP user bytes
1Dh BYTE number of BDS buffers
1Eh BYTE number of BDS responses
1Fh DWORD pointer to BDS buffers (see below)
Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
Offset Size Description
00h WORD "tup_address_network"
02h BYTE "tup_address_notid"
03h BYTE "tup_address_socket"
04h BYTE "tup_enum"
05h 99 BYTEs name
Format of BDS entries:
Offset Size Description
00h DWORD pointer to buffer
04h WORD size of buffer
06h WORD BDS data size
08h 4 BYTEs "bds_userbytes"
--------N-5C---------------------------------
INT 5C - IBM 802.2 INTERFACE (LLC)
ES:BX -> CCB (see below)
Return: none
Format of CCB:
Offset Size Description
00h BYTE adapter
01h BYTE command code
02h BYTE return code
03h BYTE work
04h DWORD pointer to ???
08h DWORD pointer to completion function???
0Ch DWORD pointer to parameters???
--------N-5C---------------------------------
INT 5C - $25 LAN - INSTALLATION CHECK
Notes: current versions only check whether the vector is 0000h:0000h or not
future versions are supposed to have the signature "NET" in the three
bytes preceding the INT 5C handler
--------N-5C04-------------------------------
INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
AH = 04h
AL = COM port (0 = default)
CX = wait count in character times (should be at least 100)
Return: ZF set if link alive
--------H-5D---------------------------------
INT 5D - IRQ13 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 75
--------H-5D---------------------------------
INT 5D - IRQ5 relocated by DoubleDOS
SeeAlso: INT 0D,INT 5C"DoubleDOS"
--------H-5E---------------------------------
INT 5E - IRQ14 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 76
--------H-5E---------------------------------
INT 5E - IRQ6 relocated by DoubleDOS
SeeAlso: INT 0E,INT 5D"DoubleDOS"
--------H-5F---------------------------------
INT 5F - IRQ15 relocated by DESQview 2.26+
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 77
--------H-5F---------------------------------
INT 5F - IRQ7 relocated by DoubleDOS
SeeAlso: INT 0F,INT 5E"DoubleDOS"
--------b-5F00-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
AH = 00h
AL = video mode
07h text, system manager compliant
20h 240x128 mono graphics, system manager compliant
87h text, not system manager compliant
A0h 240x128 mono graphics, not system manager compliant
Note: the defaults after setting the mode to graphics are (0,0) logical
origin, full-screen clip region, (0,0) pen location, pen color 1,
pixel replacement FORCE, line type and fill mask all bits set
SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
--------b-5F01-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
AH = 01h
ES:DI -> 8-byte fill mask
Note: the fill mask represents an 8x8 pixel box and is repeated as necessary
when drawing filled rectangles; it is always aligned with the byte
boundaries of video memory, regardless of the actual boundaries of
the rectangle
SeeAlso: AH=02h
--------b-5F02-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
AH = 02h
ES:DI -> graphics info record (see below)
Return: DX:AX -> filled graphics info record (for return to high-level langs)
Format of graphics info record:
Offset Size Description
00h BYTE current video mode
01h BYTE default video mode
02h WORD display width in pixels
04h WORD display height in pixels
06h WORD current pen column
08h WORD current pen row
0Ah WORD current line type
0Ch WORD current replacement rule
0Eh WORD current pen color
10h WORD current leftmost column of clip region
12h WORD current rightmost column of clip region
14h WORD current topmost row of clip region
16h WORD current bottommost row of clip region
18h WORD current column of logical origin
1Ah WORD current row of logical origin
1Ch 8 BYTEs current fill mask
--------b-5F03-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
AH = 03h
CX = column
DX = row
SeeAlso: AH=04h
--------b-5F04-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
AH = 04h
CX = left-most column
DX = top-most row
SI = right-most column
DI = bottom-most row
SeeAlso: AH=03h
--------b-5F05-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
AH = 05h
AL = fill type
00h outline, using current line type and color
01h solid, using current color
02h pattern, using current fill mask and color
DX,CX = row,column of other corner of rectangle
Note: the rectangle is drawn starting at the current pen position
SeeAlso: AH=01h,AH=06h,AH=07h
--------b-5F06-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
AH = 06h
DX,CX = row,column of end point
Note: the line is drawn starting at the current pen position
SeeAlso: AH=05h,AH=07h
--------b-5F07-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
AH = 07h
DX,CX = row,column of point
Note: also sets pen position to the specified point
SeeAlso: AH=06h,AH=08h,AH=0Ch
--------b-5F08-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
AH = 08h
DX,CX = row,column of new pen position
SeeAlso: AH=07h,AH=09h
--------b-5F09-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
AH = 09h
AL = new color (00h = white, 01h = black)
SeeAlso: AH=08h,AH=0Ah,AH=0Bh
--------b-5F0A-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
AH = 0Ah
AL = new replacement rule
00h force
01h AND
02h OR
03h XOR
SeeAlso: AH=01h,AH=09h,AH=0Bh
--------b-5F0B-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
AH = 0Bh
CX = new line type
Note: the line type specifies 16 bits which are repeated over and over while
drawing the pixels of a line
SeeAlso: AH=09h,AH=0Ah
--------b-5F0C-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
AH = 0Ch
DX,CX = row,column of pixel to read
Return: AX = pixel color
SeeAlso: AH=07h
--------b-5F0D-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
AH = 0Dh
DX,CX = row,column of first corner
BP,SI = row,column of second corner
ES:DI -> image buffer (see below)
Note: the specified corners are included in the saved image
SeeAlso: AH=0Eh
Format of image buffer:
Offset Size Description
00h WORD number of planes (always 01h on HP 95LX)
02h WORD number of bits/pixel (always 01h on HP 95LX)
04h WORD image width in pixels
06h WORD image height in pixels
08h N BYTEs image data
requires (WIDTH+7)/8 * HEIGHT bytes
--------b-5F0E-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
AH = 0Eh
AL = replacement rule
bit 2: invert image before applying rule
bits 1-0: 00 force
01 AND
10 OR
11 XOR
DX,CX = row,column of top left corner
ES:DI -> image buffer (see AH=0Dh)
Note: if the specified image does not fit completely on the screen, this call
does nothing
SeeAlso: AH=0Dh
--------b-5F0F-------------------------------
INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
AH = 0Fh
AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
DX,CX = row,column of first character's top left corner
ES:DI -> ASCIZ text
--------!------------------------------------